0%

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:

Try it

Python controleert de voorwaarden van boven naar beneden:

  1. temperature >= 30 is False, dus Python slaat het eerste blok over.

  2. temperature >= 20 is True, dus Python wijst "Warm" toe.

  3. 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:

Try it

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:

Try it

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.

Een score van 82 haalt de grens van 90 niet, haalt de grens van 75 wel, selecteert B, slaat latere takken over en gaat verder onder de keten.

Je kunt meer dan één elif gebruiken

Een keten kan verschillende elif-takken bevatten:

Try it

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:

  • Hot voor temperaturen van 30 of hoger;

  • Warm voor temperaturen van minstens 20 maar onder 30;

  • Cool voor temperaturen van minstens 10 maar onder 20;

  • Cold voor alles onder 10.

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.

  • Hot als temperature minstens 30 is

  • Warm als de temperatuur minstens 20 is, maar niet voldeed aan de eerdere tak

  • Cool als de temperatuur minstens 10 is, maar niet voldeed aan een eerdere tak

  • Cold in alle andere gevallen

Laat temperature = 21 en de meegeleverde printaanroep ongewijzigd.