← Python/Kiezen en herhalen
Les 1 van 8
MODULE 02 · 01◷ 18 min

Kies een route met if en else

Na deze les kun je
  • Een voorwaarde in een if-blok gebruiken
  • Twee routes met else uitwerken
  • Een grenswaarde nul correct behandelen

Een voorraadprogramma hoeft alleen een reservering te maken wanneer er genoeg exemplaren zijn. Tot nu toe liet je Python vragen beantwoorden met True of False; nu gebruik je zo'n antwoord om te kiezen wat er gebeurt. Daarmee kan hetzelfde programma passend reageren op verschillende gegevens.

Een voorwaarde kiest een route

Een voorwaarde is een vraag die voor deze keuze waar of onwaar wordt. Met if zeg je: voer de volgende opdrachten alleen uit als die voorwaarde waar is. Na de voorwaarde staat een dubbele punt.

De opdrachten die bij de keuze horen vormen een blok. In Python herken je dat blok aan de inspringing: de spaties vóór de code. Gebruik vier spaties per niveau en laat de regels van hetzelfde blok even ver inspringen.

Met else: geef je aan wat er anders moet gebeuren. else staat even ver naar links als de bijbehorende if en heeft geen eigen voorwaarde. Bij een if/else-keuze wordt precies één van de twee blokken uitgevoerd.

Na de keuze gaat het programma verder met de eerstvolgende regel zonder die extra inspringing. Dat is een geschikte plaats voor een bericht dat je altijd wilt tonen. De inspringing is dus onderdeel van de betekenis van je programma, niet alleen een manier om het netjes op te maken.

Een boek reserveren

Bekijk eerst het aantal beschikbare boeken en het gevraagde aantal. Voorspel vervolgens welke route Python kiest en welk aantal je aan het einde ziet.

Is de reservering mogelijk?
available = 2
wanted = 3
enough = available >= wanted
print(enough)
if enough:
    status = "gereserveerd"
    reserved = wanted
else:
    status = "wachtlijst"
    reserved = 0
print(f"{status}: {reserved} boeken")
Verwachte uitvoer
False
wachtlijst: 0 boeken

Er zijn twee boeken beschikbaar, terwijl de aanvraag er drie vraagt. De vergelijking levert daarom False op en alleen het else-blok wordt uitgevoerd. Beide namen voor het eindbericht krijgen in die route een waarde.

De laatste print staat buiten de keuze en wordt dus altijd uitgevoerd. Als er genoeg boeken waren, zou hetzelfde bericht de waarden uit de andere route gebruiken. Door in beide blokken een status en een aantal vast te leggen, hoeft het bericht niet te raden welke namen bestaan.

Een boolean kun je zoals hier eerst onder een naam bewaren. Dat maakt de vraag leesbaar en laat je dezelfde uitkomst later nog eens gebruiken. Je kunt de vergelijking ook rechtstreeks achter if zetten wanneer een extra naam niets toevoegt.

Python verwacht een ingesprongen blok

Wie de dubbele punt wel typt maar de volgende regel helemaal links laat beginnen, krijgt geen geldige keuze. Dit kleine voorbeeld laat de foutmelding zien.

Een blok zonder inspringing
if True:
print("Welkom")
Verwachte fout
IndentationError: expected an indented block after 'if' statement

De IndentationError betekent hier dat Python een ingesprongen blok verwachtte. Zet vier spaties vóór de printregel, zodat die bij de if hoort. Een programma met deze fout start niet; dat verschilt van geldige code die per ongeluk de verkeerde route kiest.

Nu jij

De editor leest automatisch een temperatuur via de bekende combinatie int(input()). Je bepaalt of het vriest, kiest een status en berekent zo nodig hoeveel opwarming nodig is. De drie tests bevatten vorst, precies nul en een positieve temperatuur; nul hoort bij de route zonder vorst.

Testinvoer · 3 varianten

Je programma krijgt deze invoer automatisch. Elke variant begint opnieuw. Alle varianten moeten kloppen.

Vier graden onder nul
-4
Precies nul
0
Boven nul
12
AAN DE SLAG 0/4
1

Formuleer de voorwaarde

Bewaar of temperature kleiner is dan nul in freezing. Toon die boolean op regel 1.

2

Werk beide routes uit

Kies met if/else de tekst vorst of vrij. Toon state op regel 2.

3

Bereken de opwarming

Maak heating gelijk aan -temperature bij vorst en anders nul. Toon het getal op regel 3.

4

Maak het eindbericht

Toon op regel 4 Status: ...; graden: ... met state en heating.

Dit neem je mee

  • if voert een blok uit wanneer de voorwaarde waar is.
  • else kiest de andere route; de inspringing koppelt code aan een blok.
  • Code na de keuze kan de waarden uit de gekozen route gebruiken.

Hierna voeg je met elif meer dan twee mogelijkheden aan een keuze toe.

main.py
UitvoerPython
›
›_

Hier komt je resultaat.

Voer je code uit en ontdek
wat je hebt gemaakt.

0/4 stappen
EVEN MEEKIJKEN

Bekijk hoe het kan.

Je mag de oplossing bekijken. Deze poging telt dan niet mee als afgeronde les. Met Reset kun je daarna opnieuw zelf oefenen.