控制#

简介#

Python 中的控制功能可以让你告诉机器人何时等待、何时重复操作、如何做出决定以及何时结束项目。

以下是所有控制指令的清单,包括方法和核心 Python 关键字:

  • wait –暂停程序一段时间。

  • for –对序列中的每个项目重复代码。

  • if –如果条件为true,则运行代码。

  • if/else –根据条件运行不同的代码。

  • if/elif/else –按顺序检查多个条件。

  • while –条件为true时重复代码。

  • break –立即退出循环。

  • stop_program –结束正在运行的程序。

  • pass –无需执行任何操作时使用占位符。

Wait#

wait 暂停一段特定的时间,然后转到下一行代码。

**用法: **
wait(time, units)

参数

描述

time

等待时间,以正整数或小数表示。

units

表示时间的单位:MSEC(默认)— 毫秒,或 SECONDS

# Move right for one second, then stop
robot.move_at(90)
wait(1, SECONDS)
robot.stop_all_movement()

For#

for 重复一组特定次数的操作。 for 可用于循环遍历列表、元组、字典、集合、字符串中的项目,或用于具有range的指定次数的循环。

Usage:

for value in expression_list:
    pass

参数

描述

value

存储迭代中的当前元素的临时变量。

expression_list

循环遍历的元素集合(例如,列表、字符串、范围)。

# Move in a square path.
for index in range(4):
    robot.move_for(50, 0)
    robot.turn_for(RIGHT, 90)

# Print each item in the list
colors = ["Red", "Green", "Blue"]

for color in colors:
    robot.screen.print(color)
    robot.screen.next_row()

显示正在屏幕上打印的三个对象。

If#

if 在条件为 True 时执行缩进的指令块。

用法:

if condition:
    pass

参数

描述

condition

在语句运行时被检查的表达式或变量。如果为 True,则执行 if 指令块内的代码;如果为 False,则跳过该指令块。

# Kick when the screen is pressed
while True:
    if robot.screen.pressing():
        robot.kicker.kick(MEDIUM)
    wait(0.1, SECONDS)

If/Else#

if 和 else 根据条件为 True 还是 False,决定运行哪个缩进的指令块。

用法:

if condition:
    pass
else:
    pass

参数

描述

condition

在语句运行时被检查的表达式或变量。如果为 True,则执行 if 指令块内的代码;如果为 False,则改为执行 else 指令块内的代码。

# Show one emoji when the screen is pressed,
# and a different emoji when not pressed
while True:
    if robot.screen.pressing():
        robot.screen.show_emoji(EXCITED)

    else:
        robot.screen.show_emoji(BORED)
    
    wait(0.1, SECONDS)

If/Elif/Else#

if/elif/else 结构根据条件选择哪个缩进代码块运行:

  • 如果条件为 if,True 会运行其指令块。

  • elif 仅当之前所有条件均为 False 时,才检查其他条件。可以使用多个 elif 语句。

  • else 仅当之前没有任何条件为 True 时,才运行其指令块。

用法:

if condition:
    pass
elif condition:
    pass
else:
    pass

参数

描述

condition

在语句运行时被检查的表达式或变量。第一个为 True 的条件决定执行哪个指令块;如果没有任何条件为 True,则运行 else 指令块。

# Move the robot forward or reverse
# based on the position of the joystick
def when_axis_changed():
    position = controller.axis1.position()
    if position > 0:
        robot.move_at(0)
    elif position < 0:
        robot.move_at(180)
    else:
        robot.stop_all_movement()

controller.axis1.changed(when_axis_changed)

While#

while 只要条件为 True,就会重复运行代码。它也可以通过将条件设为 True 来像“永久循环”一样使用,或者通过在条件前添加 not 来像“等待直到”一样使用,如下方示例所示。

用法:

while condition:
    pass

参数

描述

condition

在每次迭代前被检查的表达式或变量。如果为 True,则循环继续;如果为 False,则循环停止。

# Keep the LEDs green while the robot is moving
robot.move_for(200, 0, wait=False)
while robot.is_move_active():
    robot.led.on(ALL_LEDS, GREEN)
    wait(50, MSEC)

robot.led.on(ALL_LEDS, BLACK)

while True:
    # Continually flash all LEDs red then green.
    robot.led.on(ALL_LEDS, RED)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, GREEN)
    wait(0.5, SECONDS)

# Wait until the screen is pressed before
# turning off the LEDs
while not robot.screen.pressing():
    robot.led.on(ALL_LEDS, RED)
    wait(50, MSEC)

robot.led.on(ALL_LEDS, BLACK)

Break#

break 会立即退出循环。break 可用于跳出永久循环。

# Flash LEDs until the screen is pressed
while True:
    robot.led.on(ALL_LEDS, RED)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, GREEN)
    wait(0.5, SECONDS)

    if robot.screen.pressing():
        break

# Turn the LEDs Off
robot.led.off(ALL_LEDS)

Stop Program#

stop_program ends a running project.

**用法: **
robot.stop_program()

参数

描述

该方法没有参数。

# Stop the project once the screen is pressed
while True:
    robot.led.on(ALL_LEDS, RED)
    wait(0.5, SECONDS)
    robot.led.on(ALL_LEDS, GREEN)
    wait(0.5, SECONDS)
    if robot.screen.pressing():
        robot.stop_program()

Pass#

pass 是未来代码的占位符,可用于避免空循环、条件和函数中的错误。

if condition:
    pass

def function():
    pass