Als piloot, wil ik dat het script vΓ³Γ³r het opstijgen alle onveilige situaties afvangt en met de gemeten waarde meldt wat er mis is, zodat de drone alleen vliegt als het veilig kan en ik meteen zie waarom hij weigert.
Wat gebeurt er als je de drone laat opstijgen zonder de batterij te controleren? In dit moment laten we het misgaan β zodat je begrijpt waarom de check noodzakelijk is.
Een guard clause is een if-statement dat vroeg uit de functie/script springt als iets niet klopt.
value = get_value()
if value < 20: # β guard: controleer vΓ³Γ³r je verder gaat
print("Te laag!")
exit() # β stop direct
# Alleen hier als value >= 20
do_important_action()
Drie onderdelen:
exit())if/else-blok te denken.
In plaats daarvan zeg je: "Als X niet klopt, stop. Anders, ga door."
Typ check <value> [value2] en zie wat de guards zouden doen.
Probeer: check 10, check 50, check 100 8.
Herschrijf het script hieronder zodat de drone alleen opstijgt als de batterij hoog genoeg is. Voeg een guard clause toe die het script stopt bij <20%.
from djitellopy import Tello
tello = Tello()
tello.connect()
battery = tello.get_battery()
# TODO: voeg guard clause toe
# Als battery < 20: print een melding en stop
tello.takeoff()
tello.move_forward(100)
tello.land()
tello.end()
Acceptatiecriteria
if battery < 20:f"Batterij te laag: {battery}%".exit() β script stopt daar.tello.takeoff() staat na de guard op indentatieniveau 0.battery = 10 (stopt) en battery = 25 (gaat verder).