Als developer van het vliegscript, wil ik weten waar een variabele bestaat en wat een functie wel en niet kan veranderen, zodat mijn vluchtberekeningen nooit stilletjes met een oude of verkeerde waarde doorrekenen.
Een variabele uit een if of for leeft gewoon door — behalve als het blok nooit draaide.
In taak 1 leerde je dat een functie zijn eigen scope heeft. De logische vervolgvraag is:
geldt dat ook voor een if of een for? In veel andere talen wel.
In Python niet: alleen een functie maakt een nieuwe scope.
temperature = 75
if temperature > 60:
status = "te heet" # binnen het if-blok aangemaakt
limit = 60
print(f"Status: {status} (grens: {limit}°C)")
# Status: te heet (grens: 60°C) ← werkt gewoon
Hetzelfde geldt voor een lus. De lus-variabele bestaat ná de lus nog steeds:
for value in [45, 80, 12]:
last_reading = value
print(f"Laatst gelezen: {last_reading}") # 12
print(f"Loop-variabele: {value}") # 12 — bestaat nog!
temperature = 45 wordt het if-blok overgeslagen en crasht de
print() met een NameError.temperature = 45
if temperature > 60:
status = "te heet"
print(f"Status: {status}")
# NameError: name 'status'
# is not defined
temperature = 45
status = "normaal"
if temperature > 60:
status = "te heet"
print(f"Status: {status}")
# Status: normaal
Met een startwaarde vóór het blok bestaat de variabele altijd. Of het blok nu draait
of niet: print() heeft altijd iets te tonen.
Kies een meetreeks en kijk of de print() na het blok werkt. Zet de
startwaarde aan om het verschil te zien:
if- of
for-blok? Geef hem dan vóór het blok een startwaarde. Dan kan je code
nooit afhangen van of het blok toevallig draaide.
Deze code zoekt de laatste meting boven de grens. Met deze waarden werkt hij — maar hij is stuk te krijgen. Deze tester draait geen echte Python, maar rekent na wat jouw versie zou printen.
Probeer: haal 80 uit readings, maak de lijst helemaal leeg,
of zet THRESHOLD op 100. Los het daarna op met een startwaarde vóór de lus.
Scenario: vóór het opstijgen controleert je script het vluchtplan op te grote stappen en op onbekende richtingen. Het script werkt prima zolang er iets fout is in het plan — maar bij een perfect plan, of een leeg plan, crasht het. Dat is precies het omgekeerde van wat je wilt.
Gegeven:
flight_plan = [
{"direction": "forward", "distance": 100},
{"direction": "up", "distance": 50},
]
VALID_DIRECTIONS = ["forward", "back", "left", "right", "up", "down"]
MAX_STEP_DISTANCE = 120
Je taak: schrijf de controle zo dat hij bij élk vluchtplan een nette uitkomst geeft — ook bij een plan zonder fouten en bij een leeg plan. Bepaal zelf welke variabelen je vooraf een startwaarde geeft.
Acceptatiecriteria:
if- of for-blok aangemaaktStap 1: 140 cm (max: 120 cm)