控制#
简介#
Python 中的控制功能可以让你告诉机器人何时等待、何时重复操作、如何做出决定以及何时结束项目。
以下是可用控件列表,包括方法和核心 Python 关键字:
wait–暂停程序一段时间。for–对序列中的每个项目重复代码。if–如果条件为true,则运行代码。if/else–根据条件运行不同的代码。if/elif/else–按顺序检查多个条件。while–条件为true时重复代码。break–立即退出循环。quit–结束正在运行的项目。pass–无需执行任何操作时使用占位符。
wait#
wait 暂停一段特定的时间,然后转到下一行代码。
用法:
wait(time, units)
参数 |
描述 |
|---|---|
|
等待时间,以正整数或小数表示。 |
|
表示时间的单位: |
# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
for#
for 重复一组特定次数的操作。 for 可用于循环遍历列表、元组、字典、集合、字符串中的项目,或用于具有range的指定次数的循环。
用法:
for value in expression_list:
pass
组成部分 |
描述 |
|---|---|
|
存储迭代中的当前元素的临时变量。 |
|
循环遍历的元素集合(例如,列表、字符串、范围)。 |
# 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()
# Print each item in a list.
colors = ["Red", "Green", "Blue"]
for color in colors:
controller.screen.print(color)
controller.screen.next_row()
if#
if 在条件为 True 时执行缩进的指令块。
用法:
if condition:
pass
组成部分 |
描述 |
|---|---|
|
在语句运行时被检查的表达式或变量。如果为 |
# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Move with controller
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
if controller.button5.pressing():
drone.camera.capture_image(FORWARD_CAMERA)
wait(5, MSEC)
if/else#
if 和 else 根据条件为 True 还是 False,决定运行哪个缩进的指令块。
用法:
if condition:
pass
else:
pass
组成部分 |
描述 |
|---|---|
|
在语句运行时被检查的表达式或变量。如果为 |
# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
if controller.axis1.position() > 0:
drone.climb(direction=UP, velocity=50)
else:
drone.hover()
wait(5, MSEC)
if/elif/else#
if/elif/else 结构根据条件选择哪个缩进指令块运行:
如果条件为
True,if会运行其指令块。elif仅当之前所有条件均为False时,才检查其他条件。可以使用多个elif语句。else仅当之前没有任何条件为True时,才运行其指令块。
用法:
if condition:
pass
elif condition:
pass
else:
pass
组成部分 |
描述 |
|---|---|
|
在语句运行时被检查的表达式或变量。第一个为 |
# Move the drone up or down based on the position of the joystick.
drone.take_off(climb_to=500)
while True:
position = controller.axis1.position()
if position > 0:
drone.climb(direction=UP, velocity=50)
elif position < 0:
drone.climb(direction=DOWN, velocity=50)
else:
drone.hover()
wait(5, MSEC)
while#
while 只要条件为 True,就会重复运行代码。它也可以通过将条件设为 True 来像“永久循环”一样使用,或者通过在条件前添加 not 来像“等待直到”一样使用,如下方示例所示。
用法:
while condition:
pass
组成部分 |
描述 |
|---|---|
|
在每次迭代前被检查的表达式或变量。如果为 |
# Hover at 200 mm.
drone.take_off(climb_to=500)
while drone.range.get_distance(DOWNWARD_RANGE, MM) > 200:
drone.climb(direction=DOWN, velocity=10)
drone.hover()
wait(3, SECONDS)
drone.land()
break#
break 会立即退出循环。break 可用于跳出永久循环。
# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Move with controller
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
if controller.button5.pressing():
break
wait(5, MSEC)
drone.land()
quit#
quit结束正在运行的项目。
用法:
quit()
参数 |
描述 |
|---|---|
该方法没有参数。 |
# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
# Move with controller
drone.move_with_vectors(
forward=controller.axis4.position(),
rightward=controller.axis3.position(),
upward=controller.axis1.position(),
rotation=controller.axis2.position()
)
if controller.button5.pressing():
quit()
wait(5, MSEC)
drone.land()
pass#
pass 是未来代码的占位符,可用于避免空循环、条件和函数中的错误。
if condition:
pass
def function():
pass