0%

Beslissingen nemen · oefening

Kies tussen twee paden

Een if-instructie kan een blok uitvoeren als de voorwaarde waar is. Als de voorwaarde onwaar is, slaat Python dat blok over en gaat het verder.

Soms moet een programma precies één van twee paden kiezen. Een else-blok biedt het tweede pad.

Een keuze met twee uitkomsten

Voer dit voorbeeld uit:

Try it

Python evalueert temperature < 10 één keer.

  • Als de voorwaarde True is, wordt het eerste ingesprongen blok uitgevoerd.

  • Als de voorwaarde False is, wordt het else-blok uitgevoerd.

Precies één van die twee blokken wordt uitgevoerd. De laatste printaanroep staat buiten beide blokken en wordt dus in beide gevallen daarna uitgevoerd.

Verander temperature in 16 en voer het voorbeeld opnieuw uit. Het eerste bericht wordt overgeslagen en het else-bericht verschijnt.

Hoe if en else worden uitgelijnd

De sleutelwoorden if en else moeten even ver inspringen:

if condition:
    # Runs when the condition is true
else:
    # Runs when the condition is false

De dubbele punt na else is verplicht. else heeft geen eigen voorwaarde, omdat het ‘in elk ander geval’ betekent.

Dit is geen geldige Python-code:

else temperature >= 10:

Als je nog een voorwaarde wilt controleren, gebruik je het sleutelwoord elif, dat je in de volgende les leert.

Gebruik else in plaats van de tegenovergestelde vraag

Je zou twee afzonderlijke beslissingen kunnen schrijven die tegenovergestelde vragen stellen:

Try it

Bij een echte keuze tussen twee mogelijkheden drukken if en else het verband duidelijker uit:

Try it

De tweede versie stelt één vraag en garandeert één resultaat. Zo voorkom je ook dat je later één vergelijking verandert en vergeet de tegenovergestelde aan te passen.

Sla in elke tak een resultaat op

Takken kunnen verschillende waarden aan dezelfde variabele toewijzen:

Try it

Welke tak ook wordt uitgevoerd, die wijst een string toe aan booking_status. De printaanroep komt na de volledige beslissing en gebruikt de waarde die de gekozen tak heeft toegewezen.

Dit patroon is handig als het programma eerst gegevens moet kiezen en die daarna moet tonen of gebruiken.

Een booleaanse variabele werkt hier ook

De voorwaarde kan een booleaanse variabele zijn:

Try it

Je hoeft geen notifications_enabled == True te schrijven. De variabele bevat al het booleaanse antwoord.

Welke versie koppelt een else-blok correct aan de bijbehorende if-instructie?

# Version A
if score >= 50:
    print("Passed")
    else:
        print("Try again")

# Version B
if score >= 50:
    print("Passed")
else:
    print("Try again")

Wat drukt deze code af?

points = 7
if points >= 10:
    print("Target reached")
else:
    print("Keep going")
print("Checked")

Maak een boekingsbericht

De oefening geeft je een vast aantal resterende plaatsen. Gebruik één if/else-instructie om booking_message toe te wijzen:

  • gebruik Seats are available. als seats_remaining groter is dan 0;

  • gebruik anders Sold out..

De meegeleverde printaanroepen tonen het gekozen bericht en bevestigen daarna dat de controle klaar is. Verander seats_remaining in een positief getal nadat je oplossing slaagt en voer het programma opnieuw uit om het andere pad te zien.

Opdracht

Gebruik één if/else-instructie om het boekingsbericht te kiezen.

  • Als seats_remaining groter is dan 0, wijs dan Seats are available. toe aan booking_message.

  • Wijs anders Sold out. toe aan booking_message.

Laat de vaste waarde en de meegeleverde printaanroepen ongewijzigd. Gebruik een dubbele punt na zowel if als else en laat elke toewijzing vier spaties inspringen.