КОНТРОЛЬ#
Вступ#
Керування в 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
Компоненти |
Опис |
|---|---|
|
Вираз або змінна, яка перевіряється під час виконання оператора. Якщо значення дорівнює |
# 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 вибирає, який блок коду з відступом виконуватиметься на основі умов:
ifвиконує свій блок, якщо умоваTrue.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 завершує запущений проект.
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