变量#
介绍#
变量存储数据,并允许您在整个程序中重用和操作数据。Python 是一种动态类型语言,这意味着您无需显式声明变量的类型。相反,系统会根据赋值自动推断变量的类型。例如:
angle = 90 # angle is an integer
dist = "Distance: " # dist is a string
steps = 2.5 # steps is a float
Python 也是强类型的,这意味着如果不显式转换,就无法对不兼容的类型执行操作。例如:
blocks = 2 # blocks is an integer
rings = "4" # rings is a string
result = barrels + sports_balls # Creates a TypeError
要解决此类问题,您必须明确转换类型(如果适用):
blocks = 2 # blocks is an integer
rings = "4" # rings is a string
# Convert rings to an integer before adding
result = int(rings) + blocks
此 API 解释了 Python 中常见的变量类型。虽然并非详尽无遗,但它涵盖了您在实际工作中最可能使用的类型。
局部变量 – 在函数内部声明并仅在该范围内使用;最适合临时或独立的值。
全局变量 – 在任何函数之外声明并在整个项目中使用;适合在函数之间共享数据。
整数 – 用于计数、距离或任何不带小数的整数。
浮点数 – 带有小数点的数字,适用于精确测量或计算。
字符串 – 文本值,用于消息、标签或显示可读输出。
Boolean –
True
orFalse
values for logic and decision-making.NoneType – 表示“尚无值”,通常用作占位符。
范围 – 自动生成数字序列,最常用于循环。
列表 – 可变的项目集合;适用于存储对象或传感器读数等值组。
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!"
brain.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
brain.screen.print(message)
brain.screen.next_row()
show_global()
# And you can access 'message' outside a function
brain.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
brain.screen.print("Count: {}".format(count))
brain.screen.next_row()
increase_count()
increase_count()
数据类型#
Python 变量可以存储各种类型的数据,每种类型都适用于不同的用例。以下是最常用的类型:
Integer#
整数是一个整数。
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)
Float#
浮点数 是小数。
# Store a value with decimal points
raw_value = 0.88
# Print the decimal value as a percentage
brain.screen.print(raw_value * 100, "%")
String#
字符串是字符序列,通常用于文本。
# Set the variable to a string then print the string
message = "Ready!"
brain.screen.print(message)
**注意:**字符串必须始终用匹配的引号括起来,可以是单引号 ('
),也可以是双引号 ("
)。您可以使用任一样式,但开始和结束标记必须匹配。
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:
brain.screen.print("Package delivered!")
else:
brain.screen.print("Delivering...")
布尔值可以在项目的任何时候改变。
# Print the value of the delivered variable
delivered = True
brain.screen.print(delivered)
wait(2,SECONDS)
# Clear the screen and print the value of the variable again
brain.screen.clear_screen()
delivered = False
brain.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:
brain.screen.print("No task!")
else:
brain.screen.print("Task: {}".format(current_task))
Range#
范围 是一系列数字,通常用于循环生成数字序列。其格式如下:
range(start, stop, step)
The
start
value is inclusive (the sequence begins here). This defaults to 0.The
stop
value is exclusive (the sequence stops before this number).The
step
determines how much each number increases (or decreases). This defaults to 1.
# 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)
# 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
brain.screen.print(index)
brain.screen.next_row()
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
brain.screen.print(index)
brain.screen.next_row()
Lists can be added to using 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
brain.screen.print(index)
brain.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:
brain.screen.print(element, ", ")
brain.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
brain.screen.print(matrix[0])
Tuple#
元组 是一系列一旦创建就无法更改的项目。它们通常用于将相关的值组合在一起。
# Define a tuple
set_1 = (100, "Left")
# Print the tuple
brain.screen.print(set_1)
Tuples are created using parentheses()
rather than square brackets []
.