Als developer van het vliegscript, wil ik alle veiligheidschecks plat onder elkaar zetten in plaats van ze diep in elkaar te nesten, zodat ik in één oogopslag zie welke checks er zijn en er zonder risico een bij kan zetten.
Het patroon: controleer alle foutgevallen EERST, op niveau 0. Daarna weet je zeker dat alles veilig is.
Een guard clause is een voorwaarde die een foute waarde detecteert en onmiddellijk afsluit. Alle guards staan bovenaan, plat achter elkaar.
if age >= 18:
if has_license:
if not banned:
print("Mag rijden")
else:
print("Geblokkeerd")
else:
print("Geen rijbewijs")
else:
print("Te jong")
if age < 18:
print("Te jong")
exit()
if not has_license:
print("Geen rijbewijs")
exit()
if banned:
print("Geblokkeerd")
exit()
# Veilig bereikt
print("Mag rijden")
Drie eenvoudige stappen: omgekeerde voorwaarde β foutmelding β direct stoppen.
if age < 18: # 1. Omgekeerde logica (fout-case)
print("Te jong") # 2. Melding
exit() # 3. Stoppen
if not has_license:
print("Geen rijbewijs")
exit()
# Allemaal goed: de rest staat gewoon op niveau 0
print("Mag rijden")
Plak hier je eigen code en klik op de knop. De check voert je code niet uit β daarvoor
gebruik je Python op je eigen laptop. Hij kijkt naar de vorm: staat elke guard op niveau 0, eindigt hij
met exit(), heeft hij een melding, en staat de rest eronder zonder else?
Je drone is opgestegen en hangt stil. Nu wil je hem een stuk laten stijgen: CLIMB centimeter,
een constante die je bovenaan zet (begin met 100). Daarna zakt hij weer terug, landt en sluit de verbinding.
Schrijf dit script in climb.py.
Voordat de drone stijgt, controleert het script vier regels. Faalt er één, dan krijgt de piloot een melding met de gemeten waarde en de grens, en landt de drone meteen.
| Regel | Wanneer is het goed? |
|---|---|
| Plafond | De hoogte nΓ‘ het stijgen is hooguit 200 cm. Het lokaal is niet hoger. |
| Batterij | Minstens 30%. |
| Temperatuur | Onder 70 Β°C. |
| Vliegtijd | Hooguit 180 seconden op deze accu. |
CLIMB.
| Methode | Wat het doet |
|---|---|
tello.move_up(x) | Stijgt x cm (van 20 tot 500). |
tello.move_down(x) | Zakt x cm (van 20 tot 500). |
Vervang voor elke test tijdelijk de metingen door vaste getallen, en zet ze daarna terug. CLIMB
blijft 100. Noteer bij elke test welke guard afgaat, of dat de drone stijgt.
| Test | hoogte | batterij | temperatuur | vliegtijd |
|---|---|---|---|---|
| 1 | 80 | 60 | 40 | 30 |
| 2 | 101 | 60 | 40 | 30 |
| 3 | 100 | 60 | 40 | 30 |
| 4 | 80 | 29 | 40 | 30 |
| 5 | 80 | 60 | 70 | 30 |
| 6 | 80 | 60 | 40 | 181 |
Test 2 en 3 schelen maar 1 cm. Welke van de twee mag stijgen? Klopt dat met je code?
Acceptatiecriteria
CLIMB en alle grenzen staan als UPPER_CASE-constanten bovenaan.