Sprint 2 ยท Beslissingen  ยท  US3: Guard clauses

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.

Taak 3: Melding met de gemeten waarde

Een goede foutmelding vertelt niet alleen wat er mis is, maar ook welke waarde het probleem veroorzaakte. Daarvoor gebruik je f-strings.

Foutmeldingen met de echte waarde

Wanneer een guard clause een probleem detecteert, moet de melding de werkelijke waarde tonen. Zo weet iemand direct wat er mis was.

Generiek โ€” niet informatief

if temperature > 60:
    print("Temp te hoog!")
    exit()

Met f-string โ€” informatief

if temperature > 60:
    print(f"Temp: {temperature}ยฐC "
          "(max: 60ยฐC)")
    exit()

Live simulator: Sleep de slider om te zien hoe de melding verandert

Temperatuur: 45ยฐC
Temperatuur te hoog!
f"Temperatuur: 45ยฐC (max: 60ยฐC)"
Patroon: f"Bericht: {waarde} (limiet: grens)"
De melding bevat: wat is er mis, de gemeten waarde, en wat is toegestaan.

Jouw opdracht: informatieve guards met f-strings

Je leest drie waarden uit de drone: de batterij, de temperatuur en de hoogte. Schrijf guards die:

  1. Constanten voor de limieten gebruiken (definieer je zelf)
  2. Foutmeldingen die de werkelijke waarde EN de limiet tonen
  3. Stopcode uitvoeren als iets fout is

Gegeven variabelen:

from djitellopy import Tello

tello = Tello()
tello.connect()

battery = tello.get_battery()               # percentage
temp    = tello.get_highest_temperature()   # graden Celsius
height  = tello.get_height()                # centimeters

Wat je moet schrijven: Guards met informatieve f-string meldingen, en daarna tello.takeoff() op niveau 0. Zelf bepalen welke waarden de limieten zijn.

Acceptatiecriteria

  • Drie constanten in UPPER_CASE voor de limieten.
  • Elke guard melding bevat: wat mis is, gemeten waarde, en limiet.
  • Minstens รฉรฉn guard triggert op je testwaarden.
  • Elke guard sluit netjes af met tello.end() en daarna exit().
  • Je kunt uitleggen waarom f-strings beter zijn dan concatenatie.