变量#

介绍#

变量存储数据,并允许您在整个程序中重用和操作数据。Python 是一种动态类型语言,这意味着您无需显式声明变量的类型。相反,系统会根据赋值自动推断变量的类型。例如:

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

Python 也是强类型的,这意味着如果不显式转换,就无法对不兼容的类型执行操作。例如:

sports_balls = 2                 # sports_balls is an integer
barrels = "4"                    # barrels is a string
result = barrels + sports_balls  # Creates a TypeError

要解决此类问题,您必须明确转换类型(如果适用):

sports_balls = 2   # sports_balls is an integer
barrels = "4"      # barrels is a string

# Convert barrels to an integer before adding
result = int(barrels) + sports_balls

此 API 解释了 Python 中常见的变量类型。虽然并非详尽无遗,但它涵盖了您在实际工作中最可能使用的类型。

  • 局部变量 – 在函数内部声明并仅在该范围内使用;最适合临时或独立的值。

  • 全局变量 – 在任何函数之外声明并在整个项目中使用;适合在函数之间共享数据。

  • 整数 – 用于计数、距离或任何不带小数的整数。

  • 浮点数 – 带有小数点的数字,适用于精确测量或计算。

  • 字符串 – 文本值,用于消息、标签或显示可读输出。

  • BooleanTrue or False values for logic and decision-making.

  • NoneType – Represents the absence of a value in Python.

  • 范围 – 自动生成数字序列,最常用于循环。

  • 列表 – 可变的项目集合;适用于存储对象或传感器读数等值组。

  • 2D 列表 – 列表的列表;非常适合表示行、网格或表格状数据。

  • 元组 – 无法更改的固定值序列;适用于分组的、不变的数据。

声明和分配变量#

To create a variable, simply assign a value to a name using the = operator:

distance = 100

命名变量时,必须遵守以下规则:

  • 名称不能包含特殊字符(例如感叹号)。

  • 名称不能以数字开头。

  • 名称中不能使用空格。

  • 该名称不能是 VEXcode 中的保留字(例如 Drivetrain)。

Local Variables#

局部变量是在函数或代码块内部定义的。它们只能在该函数或代码块的范围内访问,在其外部不可见。

def show_local():
    # This variable only exists inside this function
    message = "I'm local!" 
    robot.screen.print(message)

show_local()

局部变量通常用于存储仅与特定函数或程序部分相关的临时值。

Global Variables#

全局变量 定义在任何函数或块的外部。它们可以在程序的任何地方访问和读取,包括函数内部。

Note: A global variable can be used anywhere in your project. This can be helpful, but it can also make bugs harder to find. If the value changes, you may need to check many parts of the project to see where it changed. Use a local variable when only one function needs the value.

# The variable is defined outside a function
message = "I'm global!"  

def show_global():
    # You can access 'message' inside a function
    robot.screen.print(message)
    robot.screen.next_row()

show_global()
# And you can access 'message' outside a function
robot.screen.print(message)

By default, assigning a value to a variable inside a function creates a local variable. To modify a global variable inside a function, you must explicitly declare it using the global keyword.

# 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
    robot.screen.print(f"Count: {count}")
    robot.screen.next_row()

increase_count()
increase_count()

数据类型#

Python 变量可以存储各种类型的数据,每种类型都适用于不同的用例。以下是最常用的类型:

Integer#

An integer is a positive or negative number.

distance = 50

# Move the robot forward for the variable value in mm
robot.move_for(distance, 0)

# Add to the variable and move forward the new value, for 100mm total
distance = distance + 50
robot.move_for(distance, 0)

Float#

浮点数 是小数。

# Store a value with decimal points
raw_value = 0.88

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

String#

字符串是字符序列,通常用于文本。

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

Note: A string must always be enclosed within matching quotation marks, either single () or double (). You can use either style, but the opening and closing marks must match.

Boolean#

A Boolean represents True or False values.

# Set the state of the variable
delivered = False

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

布尔值可以在项目的任何时候改变。

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

# Clear the screen and print the value of the variable again
robot.screen.clear_screen(Color.BLACK)
delivered = False
robot.screen.print(delivered)

NoneType#

NoneType 表示 Python 中不存在某个值。

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

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

Range#

A range is a sequence of numbers, commonly used in loops to generate numeric sequences. It follows the format:

range(start, stop, step)

Components

Description

start

Optional. The start value is inclusive (the sequence begins here). The default is 0.

stop

The stop value is exclusive (the sequence stops before this number).

step

Optional. The step determines how much each number increases (or decreases). The default is 1.

# Drive and turn 4 times to move in a square
for index in range(4):
    robot.move_for(50, 0)
    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
    robot.screen.print(index)
    robot.screen.next_row()

List#

A list stores a group of items in one variable. You can add items, remove items, change items, or use each item one at a time in your project. Lists are useful when you want to keep related values together, like sensor readings, colors, or object names. Lists are created using square brackets [].

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

Use append to add items to a list.

# 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
    robot.screen.print(index)
    robot.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: 
        robot.screen.print(element, ", ")
    robot.screen.next_row()

您可以修改二维列表中的特定元素甚至整个子列表:

# 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 
robot.screen.print(matrix[0])

Tuple#

A tuple is a sequence of items that cannot be changed after they are created. They are often used to group related values together.

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

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

Tuples are created using parentheses () rather than square brackets [].