Контроль#
Введение#
Функция управления в Python позволяет указывать роботу, когда нужно ждать, когда повторять действия, как принимать решения и когда завершить проект.
Ниже приведён список доступных элементов управления, включая методы и основные ключевые слова Python:
wait– Приостанавливает проект на заданное время.for– Повторяет код для каждого элемента в последовательности.if– Выполняет код, если условие истинно.if/else– Выполняет разный код в зависимости от условия.if/elif/else– Проверяет несколько условий по порядку.while– Повторяет код, пока условие истинно.break– Немедленно выходит из цикла.quit– Завершает запущенный проект.pass– Заполнитель используется, когда никаких действий не требуется.
wait#
wait — пауза на определенное время перед переходом к следующей строке кода.
Usage:
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
Компоненты |
Описание |
|---|---|
|
An expression or variable that is checked when the statement runs. If it is |
# 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
Компоненты |
Описание |
|---|---|
|
An expression or variable that is checked when the statement runs. If it is |
# 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 выбирает, какой блок кода с отступом будет выполняться в зависимости от условий:
ifвыполняет свой блок, если условие истинноTrue.elifпроверяет дополнительные условия только в том случае, если все предыдущие условия ложныFalse. Можно использовать несколько операторовelif.elseвыполняет свой блок только в том случае, если ни одно из предыдущих условий не выполняетсяTrue.
Применение:
if condition:
pass
elif condition:
pass
else:
pass
Компоненты |
Описание |
|---|---|
|
An expression or variable that is checked when the statement runs. The first condition that is |
# 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 Завершает текущий проект.
Usage:
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