ตัวแปร#

การแนะนำ#

ตัวแปรใช้สำหรับจัดเก็บข้อมูลและช่วยให้คุณสามารถนำข้อมูลนั้นมาใช้ซ้ำและจัดการได้ตลอดทั้งโปรแกรม Python เป็นภาษาที่มีการกำหนดประเภทข้อมูลแบบไดนามิก ซึ่งหมายความว่าคุณไม่จำเป็นต้องประกาศประเภทของตัวแปรอย่างชัดเจน แต่ประเภทข้อมูลจะถูกกำหนดโดยอัตโนมัติจากค่าที่กำหนดให้กับตัวแปรนั้น ตัวอย่างเช่น:

angle = 90           # angle is an integer
dist = "Distance: "  # dist is a string
steps = 2.5          # steps is a float

Python เป็นภาษาที่มีการกำหนดประเภทข้อมูลอย่างเข้มงวด (strongly typed) ซึ่งหมายความว่าคุณไม่สามารถดำเนินการกับประเภทข้อมูลที่ไม่เข้ากันได้โดยไม่ต้องแปลงประเภทข้อมูลเหล่านั้นอย่างชัดเจน ตัวอย่างเช่น:

controller = 1                 # controller is an integer
modules = "3"                  # modules is a string
result = controller + modules  # Creates a TypeError

เพื่อแก้ไขปัญหาดังกล่าว คุณต้องแปลงประเภทข้อมูลอย่างชัดเจน หากเหมาะสม:

controller = 1                 # controller is an integer
modules = "3"                  # modules is a string

# Convert modules to an integer before adding.
result = int(modules) + controller

API นี้อธิบายประเภทตัวแปรทั่วไปใน Python แม้จะไม่ใช่รายการที่ครบถ้วนสมบูรณ์ แต่ก็ครอบคลุมประเภทที่คุณน่าจะใช้บ่อยที่สุดในทางปฏิบัติ

  • ตัวแปรโลคอล – ประกาศภายในฟังก์ชันและใช้เฉพาะภายในขอบเขตนั้นเท่านั้น เหมาะสำหรับค่าชั่วคราวหรือค่าที่แยกออกมา

  • ตัวแปรส่วนกลาง – ประกาศไว้นอกฟังก์ชันใดๆ และใช้งานตลอดทั้งโปรเจกต์ เหมาะสำหรับการแชร์ข้อมูลระหว่างฟังก์ชัน

  • จำนวนเต็ม – จำนวนเต็มที่ใช้สำหรับการนับ ระยะทาง หรือสิ่งใดก็ตามที่ไม่มีทศนิยม

  • Float – ตัวเลขที่มีจุดทศนิยม มีประโยชน์สำหรับการวัดหรือการคำนวณที่แม่นยำ

  • สตริง – ค่าข้อความ ใช้สำหรับข้อความ ป้ายกำกับ หรือแสดงผลลัพธ์ที่อ่านได้

  • บูลีน – True หรือ False ค่าสำหรับตรรกะและการตัดสินใจ

  • NoneType – หมายถึงไม่มีค่าใน Python

  • ช่วง – สร้างลำดับตัวเลขโดยอัตโนมัติ ซึ่งมักใช้ในลูป

  • รายการ – ชุดรายการที่เปลี่ยนแปลงได้ เหมาะสำหรับการจัดเก็บกลุ่มค่าต่างๆ เช่น วัตถุหรือค่าที่อ่านได้จากเซ็นเซอร์

  • รายการ 2 มิติ – รายการของรายการ เหมาะสำหรับการแสดงแถว ตาราง หรือข้อมูลที่มีลักษณะคล้ายตาราง

  • Tuple – ลำดับค่าคงที่ที่ไม่สามารถเปลี่ยนแปลงได้ มีประโยชน์สำหรับข้อมูลที่จัดกลุ่มและไม่เปลี่ยนแปลง

การประกาศและการกำหนดค่าตัวแปร#

ในการสร้างตัวแปร เพียงแค่กำหนดค่าให้กับชื่อตัวแปรโดยใช้ตัวดำเนินการ =:

distance = 100

ในการตั้งชื่อตัวแปร ต้องปฏิบัติตามกฎต่อไปนี้:

  • ชื่อต้องไม่มีอักขระพิเศษ (เช่น เครื่องหมายอัศเจรีย์)

  • ชื่อต้องไม่ขึ้นต้นด้วยตัวเลข

  • ห้ามเว้นวรรคในชื่อ

  • ชื่อดังกล่าวต้องไม่ใช่คำสงวนใน VEXcode (เช่น Drivetrain)

Local Variables#

ตัวแปรโลคอล คือตัวแปรที่ถูกกำหนดขึ้น ภายใน ฟังก์ชันหรือบล็อกโค้ด สามารถเข้าถึงได้เฉพาะภายในขอบเขตของฟังก์ชันหรือบล็อกนั้นเท่านั้น และไม่สามารถมองเห็นได้จากภายนอก

def show_local():
    # This variable only exists inside this function.
    message = "I'm local!" 
    controller.screen.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.
    controller.screen.print(message)
    controller.screen.next_row()

show_global()
# And you can access 'message' outside a function.
controller.screen.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
    controller.screen.print(f"Count: {count}")
    controller.screen.next_row()

increase_count()
increase_count()

ประเภทของข้อมูล#

ตัวแปรใน Python สามารถจัดเก็บข้อมูลได้หลายประเภท ซึ่งแต่ละประเภทเหมาะสมกับการใช้งานที่แตกต่างกัน ด้านล่างนี้คือประเภทข้อมูลที่ใช้กันทั่วไปมากที่สุด:

Integer#

จำนวนเต็ม คือ จำนวนบวกหรือจำนวนลบ

distance = 50

drone.take_off(climb_to=500)
# Move the robot forward for the variable value in mm.
drone.climb_for(direction=DOWN, distance=distance, velocity=50, units=MM)
wait(2, SECONDS)

# Add to the variable and move forward the new value, 
# for 100mm total.
distance = distance + 50
drone.climb_for(direction=UP, distance=distance, velocity=50, units=MM)
wait(2, SECONDS)

drone.land()

Float#

ตัวเลขทศนิยม (float) คือตัวเลขที่มีจุดทศนิยม

# Store a value with decimal points.
raw_value = 0.88

# Print the decimal value as a percentage.
controller.screen.print(raw_value * 100, "%")

String#

สตริง คือลำดับของตัวอักษร ซึ่งโดยทั่วไปใช้สำหรับข้อความ

# Set the variable to a string then print the string.
message = "Ready!"
controller.screen.print(message)

หมายเหตุ: ข้อความต้องอยู่ภายในเครื่องหมายอัญประกาศที่ตรงกันเสมอ ไม่ว่าจะเป็นเครื่องหมายอัญประกาศเดี่ยว ( ’ ) หรือเครื่องหมายอัญประกาศคู่ ( ” ) คุณสามารถใช้แบบใดก็ได้ แต่เครื่องหมายเปิดและปิดต้องตรงกัน

Boolean#

ค่า บูลีน แทนค่า True หรือ False เท็จ)

# Set the state of the variable.
delivered = False

# Print different messages depending on the Boolean.
if delivered:
    controller.screen.print("Package delivered!")
else: 
    controller.screen.print("Delivering...")

ค่าบูลีนสามารถเปลี่ยนแปลงได้ทุกจุดในโครงการ

# Print the value of the delivered variable
delivered = True
controller.screen.print(delivered)
wait(2,SECONDS)

# Clear the screen and print the value of the variable again
controller.screen.clear_screen(color=GREEN)
delivered = False
controller.screen.print(delivered)

NoneType#

NoneType หมายถึงการไม่มีค่าในภาษา Python

# Write what the controller's task should be as a string
current_task = None

# Check if a task is assigned
if current_task is None:
    controller.screen.print("No task!")
else:
    controller.screen.print(f"Task: {current_task}")

Range#

ช่วงตัวเลข คือลำดับของตัวเลข ซึ่งมักใช้ในลูปเพื่อสร้างลำดับตัวเลข โดยมีรูปแบบดังนี้:

range(start, stop, step)

ส่วนประกอบ

คำอธิบาย

start

ไม่บังคับ ค่าเริ่มต้นจะรวมอยู่ด้วย (ลำดับเริ่มต้นที่นี่) ค่าเริ่มต้นคือ 0

stop

ค่าหยุดเป็นค่าเฉพาะ (ลำดับจะหยุดก่อนถึงตัวเลขนี้)

step

ตัวเลือกเสริม ขั้นตอนนี้จะกำหนดว่าแต่ละตัวเลขจะเพิ่มขึ้น (หรือลดลง) เท่าใด ค่าเริ่มต้นคือ 1

# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
    drone.move_for(direction=0, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
    drone.move_for(direction=180, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
drone.land()

# 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.
    controller.screen.print(index)
    controller.screen.next_row()

List#

ลิสต์ คือโครงสร้างที่เก็บกลุ่มของรายการต่างๆ ไว้ในตัวแปรเดียว คุณสามารถเพิ่มรายการ ลบรายการ เปลี่ยนแปลงรายการ หรือใช้แต่ละรายการทีละรายการในโปรเจกต์ของคุณได้ ลิสต์มีประโยชน์เมื่อคุณต้องการเก็บค่าที่เกี่ยวข้องกันไว้ด้วยกัน เช่น ค่าที่อ่านได้จากเซ็นเซอร์ สี หรือชื่อวัตถุ ลิสต์สร้างขึ้นโดยใช้วงเล็บเหลี่ยม [].

# Define a list of colors.
colors = ["Red", "Green", "Blue"]

# Repeat for the number of items in the colors list.
for color in colors:
    # Print each color in order
    controller.screen.print(color)
    controller.screen.next_row()

ใช้คำสั่ง append เพื่อเพิ่มรายการลงในลิสต์

# Define a list of colors.
colors = ["Red", "Green", "Blue"]

# Append a new color to the list.
colors.append("Yellow")

# Repeat for the number of items in the colors list.
for color in colors:
    # Print each color in order
    controller.screen.print(color)
    controller.screen.next_row()

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: 
        controller.screen.print(element, end=", ")
    controller.screen.next_row()

คุณสามารถแก้ไของค์ประกอบเฉพาะหรือแม้แต่รายการย่อยทั้งหมดภายในรายการ 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.
controller.screen.print(matrix[0])

Tuple#

ทูเพิล คือลำดับของรายการที่ไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างขึ้นแล้ว มักใช้เพื่อจัดกลุ่มค่าที่เกี่ยวข้องกันเข้าด้วยกัน

# Define a tuple.
set_1 = (100, "Left")

# Print the tuple.
controller.screen.print(set_1)

ทูเพิลถูกสร้างขึ้นโดยใช้วงเล็บ () แทนที่จะใช้วงเล็บเหลี่ยม []