变量#

介绍#

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

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

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

red_disks = 2                       # red_disks is an integer
green_disks = "4"                      # green_disks is a string
result = red_disks + green_disks  # Creates a TypeError

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

red_disks = 2     # red_disks is an integer
green_disks = "4" # green_disks is a string

# Convert green_disks to an integer before adding
result = int(green_disks) + red_disks

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

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

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

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

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

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

  • 布尔值TrueFalse 用于逻辑和决策的值。

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

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

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

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

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

声明和分配变量#

要创建变量,只需使用 = 运算符为名称分配一个值:

distance = 100

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

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

  • 名称不能以数字开头。

  • 名称中不能使用空格。

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

Local Variables#

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

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

def main():
    show_local()

# Start threads — Do not delete
start_thread(main)

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

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
    console.print(message)
    console.new_line()

def main():
    show_global()
    # And you can access 'message' outside a function
    console.print(message)

# Start threads — Do not delete
start_thread(main)

默认情况下,在函数内部给变量赋值会创建一个局部变量。要在函数内部修改全局变量,必须使用 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))

def main():
    increase_count()
    console.new_line()
    increase_count()

# Start threads — Do not delete
start_thread(main)

数据类型#

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

Integer#

An integer is a positive or negative number.

# Build Used: Super Code Base 2.0
def main():
    distance = 100

    # Move the robot forward for the variable value in mm
    drivetrain.drive_for(FORWARD, distance, MM)

    # Add to the variable and move forward the new value, 
    # for 200mm total
    wait(1, SECONDS)
    distance = distance + 100
    drivetrain.drive_for(FORWARD, distance, MM)

# Start threads — Do not delete
start_thread(main)

Float#

浮点数 是小数。

def main():
    # Store a value with decimal points
    raw_value = 0.88

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

# Start threads — Do not delete
start_thread(main)

String#

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

def main():
    # Set the variable to a string then print the string
    message = "Ready!"
    console.print(message)

# Start threads — Do not delete
start_thread(main)

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#

布尔值代表 TrueFalse 值。

def main():
    # 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...")

# Start threads — Do not delete
start_thread(main)

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

def main():
    # 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)

# Start threads — Do not delete
start_thread(main)

NoneType#

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

def main():
    # 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))

# Start threads — Do not delete
start_thread(main)

Range#

范围 是一系列数字,常用于循环中生成数字序列。其格式如下:

range(start, stop, step)

成分

描述

start

可选。起始值包含起始值(序列从此处开始)。默认值为 0。

stop

停止值是唯一的(序列在此数字之前停止)。

step

可选。此步长决定每个数字增加(或减少)的幅度。默认值为 1。

# Build Used: Super Code Base 2.0
def main():
    # Drive and turn 4 times to move in a square
    for index in range(4):
        drivetrain.drive_for(FORWARD, 100, MM)
        drivetrain.turn_for(RIGHT, 90)

# Start threads — Do not delete
start_thread(main)

def main():
    # 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()

# Start threads — Do not delete
start_thread(main)

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 [].

def main():
    # 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()

# Start threads — Do not delete
start_thread(main)

Use append to add items to a list.

def main():
    # 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()

# Start threads — Do not delete
start_thread(main)

2D List#

二维列表,又称列表的列表,通常用于表示网格、表格或矩阵。每个子列表代表一行或一组特定的数据。

def main():
    # 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()

# Start threads — Do not delete
start_thread(main)

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

def main():
    # 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])

# Start threads — Do not delete
start_thread(main)

Tuple#

元组是一组元素的序列,创建后不能更改。它们通常用于将相关的值组合在一起。

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

    # Print the tuple
    console.print(set_1)

# Start threads — Do not delete
start_thread(main)

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