Kontrola#
Wstęp#
Sterowanie w Pythonie pozwala Ci powiedzieć robotowi, kiedy ma czekać, kiedy powtórzyć czynności, jak podejmować decyzje i kiedy zakończyć projekt.
Poniżej znajduje się lista dostępnych kontrolek, zawierająca metody i podstawowe słowa kluczowe języka Python:
wait– Wstrzymuje projekt na określony czas.for– Powtarza kod dla każdego elementu w sekwencji.if– Uruchamia kod, jeśli warunek jest prawdziwy.if/else– uruchamia inny kod w zależności od warunku.if/elif/else– Sprawdza wiele warunków w kolejności.while– Powtarza kod, dopóki warunek jest spełniony.break– Natychmiast opuszcza pętlę.quit– Kończy bieżący projekt.pass– Symbol zastępczy używany, gdy nie jest wymagana żadna akcja.
wait#
wait zatrzymuje się na określony czas przed przejściem do następnego wiersza kodu.
Usage:
wait(time, units)
Parametry |
Opis |
|---|---|
|
Czas oczekiwania, wyrażony jako dodatnia liczba całkowita lub ułamek dziesiętny. |
|
Jednostka reprezentująca czas oczekiwania: |
# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()
for#
for powtarza zestaw działań określoną liczbę razy. for można stosować do pętli po elementach na listach, krotkach, słownikach, zestawach, ciągach znaków lub do wykonania określonej liczby pętli z range.
Użycie:
for value in expression_list:
pass
Komponenty |
Opis |
|---|---|
|
Tymczasowa zmienna przechowująca bieżący element iteracji. |
|
Zbiór elementów podlegających pętli (np. lista, ciąg znaków, zakres). |
# 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 uruchamia wcięty blok kodu, jeśli warunek wynosi True.
Stosowanie:
if condition:
pass
Komponenty |
Opis |
|---|---|
|
Wyrażenie lub zmienna sprawdzana podczas wykonywania instrukcji. Jeśli wynosi |
# 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 i else określa, który wcięty blok kodu zostanie uruchomiony na podstawie tego, czy warunek jest True lub False.
Stosowanie:
if condition:
pass
else:
pass
Komponenty |
Opis |
|---|---|
|
Wyrażenie lub zmienna sprawdzana podczas wykonywania instrukcji. Jeśli wartość wynosi |
# 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#
Struktura if/elif/else wybiera, który wcięty blok kodu zostanie uruchomiony na podstawie warunków:
ifuruchamia swój blok, jeśli warunek jestTrue.elifsprawdza dodatkowe warunki tylko wtedy, gdy wszystkie poprzednie warunki są fałszyweFalse. Można użyć wielu instrukcjielif.elseuruchamia blok tylko wtedy, gdy żaden z poprzednich warunków nie jest spełnionyTrue.
Stosowanie:
if condition:
pass
elif condition:
pass
else:
pass
Komponenty |
Opis |
|---|---|
|
Wyrażenie lub zmienna sprawdzana podczas wykonywania instrukcji. Pierwszy warunek, który wynosi |
# 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 powtarza kod, dopóki warunek jest TrueMożna go również używać jako „forever”, używając True jako warunku, lub jako „wait until”, dodając not do warunku, jak pokazano w poniższych przykładach.
Stosowanie:
while condition:
pass
Komponenty |
Opis |
|---|---|
|
Wyrażenie lub zmienna sprawdzana przed każdą iteracją. Jeśli wynosi |
# 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 powoduje natychmiastowe wyjście z pętli. break może zostać użyte do opuszczenia pętli, która w przeciwnym razie działałaby w nieskończoność.
# 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 projektu.
Usage:
quit()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# 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#
Przebieg pass jest symbolem zastępczym dla przyszłego kodu i można go używać w celu uniknięcia błędów w pustych pętlach, warunkach i funkcjach.
if condition:
pass
def function():
pass