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:
Python evalueert temperature < 10 één keer.
Als de voorwaarde
Trueis, wordt het eerste ingesprongen blok uitgevoerd.Als de voorwaarde
Falseis, wordt hetelse-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:
Bij een echte keuze tussen twee mogelijkheden drukken if en else het verband duidelijker uit:
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:
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:
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.alsseats_remaininggroter is dan0;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_remaininggroter is dan0, wijs danSeats are available.toe aanbooking_message.Wijs anders
Sold out.toe aanbooking_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.