Beslissingen nemen · oefening
Controleer meerdere mogelijkheden
Een if/else-instructie kiest tussen twee paden. Sommige beslissingen hebben meer dan twee nuttige uitkomsten.
Met het Python-sleutelwoord elif kan één beslissing verschillende mogelijkheden op volgorde controleren. De naam is een afkorting van ‘else if’.
Voeg een voorwaarde toe met elif
Voer dit voorbeeld uit:
Python controleert de voorwaarden van boven naar beneden:
temperature >= 30isFalse, dus Python slaat het eerste blok over.temperature >= 20isTrue, dus Python wijst"Warm"toe.De keten stopt. Python gaat niet verder naar
else.
Er wordt maar één tak van deze keten uitgevoerd.
De eerste ware voorwaarde wint
Een if/elif/else-keten stopt zodra een voorwaarde waar is. Daardoor is de volgorde van de voorwaarden onderdeel van de programmalogica.
Neem een score van 92:
Het programma drukt Passed af. De eerste voorwaarde is al waar voor elke score van 60 of hoger, dus Python komt nooit bij de specifiekere voorwaarde score >= 90.
Zet de specifiekere, hogere grens eerst:
Nu is het resultaat Excellent. Een handige gewoonte is om precies op elke grenswaarde te testen en ook één waarde aan elke kant daarvan.
Hier zie je dezelfde regel van boven naar beneden met een score van 82: de controle op 90 geeft nee, de controle op 75 geeft ja en die eerste overeenkomst slaat alle latere takken over. In het diagram betekent first match de eerste overeenkomst, skipped overgeslagen en continue below verdergaan onder de keten.

Je kunt meer dan één elif gebruiken
Een keten kan verschillende elif-takken bevatten:
Python controleert alleen wat nodig is. Bij score = 74 zijn de eerste twee voorwaarden onwaar en is de derde waar. De laatste else vangt elke score onder 60 op.
De else-tak is optioneel, maar nuttig als het programma voor elke mogelijke waarde een resultaat nodig heeft.
Eén keten of afzonderlijke beslissingen?
Gebruik een if/elif/else-keten als de takken alternatieven zijn en er precies één moet worden uitgevoerd.
Gebruik afzonderlijke if-instructies als elke vraag onafhankelijk is en mogelijk meer dan één blok moet worden uitgevoerd. Een weerprogramma kan bijvoorbeeld zowel een hittewaarschuwing als een windwaarschuwing afdrukken. Die berichten zijn geen concurrerende antwoorden op één vraag.
Waarom moet score >= 90 in deze keten vóór score >= 60 staan?
Wat drukt deze code af?
age = 18
if age >= 21:
print("Level C")
elif age >= 18:
print("Level B")
elif age >= 16:
print("Level A")
else:
print("Not available")Deel een temperatuur in
De oefening vraagt je een van vier labels toe te wijzen:
Hotvoor temperaturen van30of hoger;Warmvoor temperaturen van minstens20maar onder30;Coolvoor temperaturen van minstens10maar onder20;Coldvoor alles onder10.
Gebruik een if/elif/else-keten met de grenzen in een duidelijke volgorde. De vaste temperatuur is 21, dus het ingediende programma moet Warm kiezen. Probeer nadat het slaagt 30, 20, 10 en 9 om elke grens te controleren.
Opdracht
Maak een if/elif/else-keten die temperature_band toewijst.
Hotalstemperatureminstens30isWarmals de temperatuur minstens20is, maar niet voldeed aan de eerdere takCoolals de temperatuur minstens10is, maar niet voldeed aan een eerdere takColdin alle andere gevallen
Laat temperature = 21 en de meegeleverde printaanroep ongewijzigd.