ตัวแปร#
การแนะนำ#
ตัวแปรใช้สำหรับจัดเก็บข้อมูลและช่วยให้คุณสามารถนำข้อมูลนั้นมาใช้ซ้ำและจัดการได้ตลอดทั้งโปรแกรม Python เป็นภาษาที่มีการกำหนดประเภทข้อมูลแบบไดนามิก ซึ่งหมายความว่าคุณไม่จำเป็นต้องประกาศประเภทของตัวแปรอย่างชัดเจน แต่ประเภทข้อมูลจะถูกอนุมานโดยอัตโนมัติจากค่าที่กำหนดให้กับตัวแปรนั้น ตัวอย่างเช่น:
angle = 90 # angle is an integer
dist = "Distance: " # dist is a string
steps = 2.5 # steps is a float
Python เป็นภาษาที่มีการกำหนดประเภทข้อมูลอย่างเข้มงวด (strongly typed) ซึ่งหมายความว่าคุณไม่สามารถดำเนินการกับประเภทข้อมูลที่ไม่เข้ากันได้โดยไม่ต้องแปลงประเภทข้อมูลเหล่านั้นอย่างชัดเจน ตัวอย่างเช่น:
red_tiles = 2 # red_tiles is an integer
green_tiles = "4" # green_tiles is a string
result = red_tiles + green_tiles # Creates a TypeError
เพื่อแก้ไขปัญหาดังกล่าว คุณต้องแปลงประเภทข้อมูลอย่างชัดเจน หากเหมาะสม:
red_tiles = 2 # red_tiles is an integer
green_tiles = "4" # green_tiles is a string
# Convert green_tiles to an integer before adding
result = int(green_tiles) + red_tiles
API นี้อธิบายประเภทตัวแปรทั่วไปใน Python แม้จะไม่ใช่รายการที่ครบถ้วนสมบูรณ์ แต่ก็ครอบคลุมประเภทที่คุณน่าจะใช้บ่อยที่สุดในทางปฏิบัติ
ตัวแปรโลคอล – ประกาศภายในฟังก์ชันและใช้เฉพาะภายในขอบเขตนั้นเท่านั้น เหมาะสำหรับค่าชั่วคราวหรือค่าที่แยกออกมา
ตัวแปรส่วนกลาง – ประกาศไว้นอกฟังก์ชันใดๆ และใช้งานตลอดทั้งโปรเจกต์ เหมาะสำหรับการแชร์ข้อมูลระหว่างฟังก์ชัน
จำนวนเต็ม – จำนวนเต็มที่ใช้สำหรับการนับ ระยะทาง หรือสิ่งใดก็ตามที่ไม่มีทศนิยม
Float – ตัวเลขที่มีจุดทศนิยม มีประโยชน์สำหรับการวัดหรือการคำนวณที่แม่นยำ
สตริง – ค่าข้อความ ใช้สำหรับข้อความ ป้ายกำกับ หรือแสดงผลลัพธ์ที่อ่านได้
บูลีน –
TrueหรือFalseค่าสำหรับตรรกะและการตัดสินใจNoneType – หมายถึงไม่มีค่าใน Python
ช่วง – สร้างลำดับตัวเลขโดยอัตโนมัติ ซึ่งมักใช้ในลูป
รายการ – ชุดรายการที่เปลี่ยนแปลงได้ เหมาะสำหรับการจัดเก็บกลุ่มค่าต่างๆ เช่น วัตถุหรือค่าที่อ่านได้จากเซ็นเซอร์
รายการ 2 มิติ – รายการของรายการ เหมาะสำหรับการแสดงแถว ตาราง หรือข้อมูลที่มีลักษณะคล้ายตาราง
Tuple – ลำดับค่าคงที่ที่ไม่สามารถเปลี่ยนแปลงได้ มีประโยชน์สำหรับข้อมูลที่จัดกลุ่มและไม่เปลี่ยนแปลง
การประกาศและการกำหนดค่าตัวแปร#
ในการสร้างตัวแปร เพียงแค่กำหนดค่าให้กับชื่อตัวแปรโดยใช้ตัวดำเนินการ =:
distance = 3
ในการตั้งชื่อตัวแปร ต้องปฏิบัติตามกฎต่อไปนี้:
ชื่อต้องไม่มีอักขระพิเศษ (เช่น เครื่องหมายอัศเจรีย์)
ชื่อต้องไม่ขึ้นต้นด้วยตัวเลข
ห้ามเว้นวรรคในชื่อ
ชื่อดังกล่าวต้องไม่ใช่คำสงวนใน VEXcode (เช่น robot)
Local Variables#
ตัวแปรโลคอล คือตัวแปรที่ถูกกำหนดขึ้น ภายใน ฟังก์ชันหรือบล็อกโค้ด สามารถเข้าถึงได้เฉพาะภายในขอบเขตของฟังก์ชันหรือบล็อกนั้นเท่านั้น และไม่สามารถมองเห็นได้จากภายนอก
def show_local():
# This variable only exists inside this function
message = "I'm local!"
console.print(message)
show_local()
ตัวแปรโลคอลมักใช้สำหรับเก็บค่าชั่วคราวที่เกี่ยวข้องเฉพาะภายในฟังก์ชันหรือส่วนใดส่วนหนึ่งของโปรแกรมเท่านั้น
Global Variables#
ตัวแปรส่วนกลาง คือตัวแปรที่ถูกกำหนดขึ้น นอก ฟังก์ชันหรือบล็อกใดๆ สามารถเข้าถึงและอ่านค่าได้ ทุกที่ ในโปรแกรม รวมถึงภายในฟังก์ชันด้วย
หมายเหตุ: ตัวแปร ส่วนกลาง สามารถใช้ได้ทุกที่ในโปรเจ็กต์ของคุณ ซึ่งอาจเป็นประโยชน์ แต่ก็อาจทำให้การค้นหาข้อผิดพลาดทำได้ยากขึ้นเช่นกัน หากค่าของตัวแปรเปลี่ยนแปลง คุณอาจต้องตรวจสอบหลายส่วนของโปรเจ็กต์เพื่อดูว่าค่าเปลี่ยนแปลงไปที่ใด ควรใช้ตัวแปรเฉพาะที่เมื่อมีเพียงฟังก์ชันเดียวที่ต้องการค่าของตัวแปรนั้น
# The variable is defined outside a function
message = "I'm global!"
def show_global():
# You can access 'message' inside a function
console.print(message)
console.new_line()
show_global()
# And you can access 'message' outside a function
console.print(message)
โดยปกติ การกำหนดค่าให้กับตัวแปรภายในฟังก์ชันจะสร้างตัวแปรโลคอลขึ้นมา หากต้องการ แก้ไข ตัวแปรโกลบอลภายในฟังก์ชัน คุณต้องประกาศตัวแปรนั้นอย่างชัดเจนโดยใช้คีย์เวิร์ด global
# Define the global variable
count = 0
def increase_count():
# Use the global keyword to let you modify the
# global variable
global count
count = count + 1
console.print("Count: {}".format(count))
increase_count()
console.new_line()
increase_count()
ประเภทของข้อมูล#
ตัวแปรใน Python สามารถจัดเก็บข้อมูลได้หลายประเภท ซึ่งแต่ละประเภทเหมาะสมกับการใช้งานที่แตกต่างกัน ด้านล่างนี้คือประเภทข้อมูลที่ใช้กันทั่วไปมากที่สุด:
Integer#
จำนวนเต็ม คือ จำนวนบวกหรือจำนวนลบ
steps = 3
# Drive forward for the variable value in steps
robot.drive_for(FORWARD, steps, STEPS)
# Add to the variable and drive forward the new value
wait(1, SECONDS)
steps = steps + 1
robot.drive_for(FORWARD, steps, STEPS)
Float#
ตัวเลขทศนิยม (float) คือตัวเลขที่มีจุดทศนิยม
# Store a value with decimal points
raw_value = 0.88
# Print the decimal value as a percentage
console.print(raw_value * 100, "%")
String#
สตริง คือลำดับของตัวอักษร ซึ่งโดยทั่วไปใช้สำหรับข้อความ
# Set the variable to a string then print the string
message = "Ready!"
console.print(message)
หมายเหตุ: ข้อความต้องอยู่ภายในเครื่องหมายอัญประกาศที่ตรงกันเสมอ ไม่ว่าจะเป็นเครื่องหมายอัญประกาศเดี่ยว (’) หรือเครื่องหมายอัญประกาศคู่ (”) คุณสามารถใช้แบบใดก็ได้ แต่เครื่องหมายเปิดและปิดต้องตรงกัน
Boolean#
ค่า บูลีน แทนค่า True หรือ False เท็จ)
# Set the state of the variable
delivered = False
# Print different messages depending on the Boolean.
if delivered:
console.print("Package delivered!")
else:
console.print("Delivering...")
ค่าบูลีนสามารถเปลี่ยนแปลงได้ทุกจุดในโครงการ
# Print the value of the delivered variable
delivered = True
console.print(delivered)
console.new_line()
wait(2, SECONDS)
# Clear the screen and print the value of the variable again
console.clear()
delivered = False
console.print(delivered)
NoneType#
NoneType หมายถึงการไม่มีค่าในภาษา Python
# No task is assigned yet
current_task = None
# Check if a task is assigned
if current_task is None:
console.print("No task!")
else:
console.print("Task: {}".format(current_task))
Range#
ช่วงตัวเลข คือลำดับของตัวเลข ซึ่งมักใช้ในลูปเพื่อสร้างลำดับตัวเลข โดยมีรูปแบบดังนี้:
range(start, stop, step)
ส่วนประกอบ |
คำอธิบาย |
|---|---|
|
ไม่บังคับ ค่าเริ่มต้นจะรวมอยู่ด้วย (ลำดับเริ่มต้นที่นี่) ค่าเริ่มต้นคือ 0 |
|
ค่าหยุดเป็นค่าเฉพาะ (ลำดับจะหยุดก่อนถึงตัวเลขนี้) |
|
ตัวเลือกเสริม ขั้นตอนนี้จะกำหนดว่าแต่ละตัวเลขจะเพิ่มขึ้น (หรือลดลง) เท่าใด ค่าเริ่มต้นคือ 1 |
# Drive and turn 4 times to move in a square
for index in range(4):
robot.drive_for(FORWARD, 1, STEPS)
robot.turn_for(RIGHT, 90)
# Count by 2 starting at 1 and ending before 12
for index in range(1, 12, 2):
# Print the values on the screen with each loop
console.print(index)
console.new_line()
List#
ลิสต์ คือโครงสร้างที่เก็บกลุ่มของรายการต่างๆ ไว้ในตัวแปรเดียว คุณสามารถเพิ่มรายการ ลบรายการ เปลี่ยนแปลงรายการ หรือใช้แต่ละรายการทีละรายการในโปรเจกต์ของคุณได้ ลิสต์มีประโยชน์เมื่อคุณต้องการเก็บค่าที่เกี่ยวข้องกันไว้ด้วยกัน เช่น ค่าที่อ่านได้จากเซ็นเซอร์ สี หรือชื่อวัตถุ ลิสต์สร้างขึ้นโดยใช้วงเล็บเหลี่ยม [].
# Define a list of colors
colors = ["Red", "Green", "Blue", "Purple"]
# Repeat for the number of items in the colors list
for index in colors:
# Print each color in order
console.print(index)
console.new_line()
ใช้คำสั่ง append เพื่อเพิ่มรายการลงในลิสต์
# Define a list of colors
colors = ["Red", "Green", "Blue", "Purple"]
# Append a new color to the list
colors.append("Yellow")
# Repeat for the number of items in the colors list
for index in colors:
# Print each color in order
console.print(index)
console.new_line()
2D List#
รายการสองมิติ หรือรายการของรายการ มักใช้เพื่อแสดงตารางหรือเมทริกซ์ โดยแต่ละรายการย่อยจะแสดงถึงแถวหรือกลุ่มข้อมูลเฉพาะกลุ่มหนึ่ง
# Assign the values in the matrix 2D list
matrix = [
["A", 1, "Red"],
["B", 2, "Orange"],
["C", 3, "Yellow"]
]
# Loop through each row
for row in matrix:
# Loop through each column in the row
for element in row:
console.print(element, ", ")
console.new_line()
คุณสามารถแก้ไของค์ประกอบเฉพาะหรือแม้แต่รายการย่อยทั้งหมดภายในรายการ 2 มิติได้:
# Assign the values in the matrix 2D list
matrix = [
["A", 1, "Red"],
["B", 2, "Orange"],
["C", 3, "Yellow"]
]
# Modify the color (in column 2) in row 0
matrix[0][2] = "Blue"
# Print the modified row from the matrix 2D list
console.print(matrix[0])
Tuple#
ทูเพิล คือลำดับของรายการที่ไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างขึ้นแล้ว มักใช้เพื่อจัดกลุ่มค่าที่เกี่ยวข้องกันเข้าด้วยกัน
# Define a tuple
set_1 = (3, "Left")
# Print the tuple
console.print(set_1)
ทูเพิลถูกสร้างขึ้นโดยใช้วงเล็บ () แทนที่จะใช้วงเล็บเหลี่ยม []