Formuleer de voorwaarde
Bewaar of temperature kleiner is dan nul in freezing. Toon die boolean op regel 1.
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 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.
Bekijk eerst het aantal beschikbare boeken en het gevraagde aantal. Voorspel vervolgens welke route Python kiest en welk aantal je aan het einde ziet.
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")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.
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.
if True:
print("Welkom")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.
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.
Je programma krijgt deze invoer automatisch. Elke variant begint opnieuw. Alle varianten moeten kloppen.
-4
0
12
Bewaar of temperature kleiner is dan nul in freezing. Toon die boolean op regel 1.
Kies met if/else de tekst vorst of vrij. Toon state op regel 2.
Maak heating gelijk aan -temperature bij vorst en anders nul. Toon het getal op regel 3.
Toon op regel 4 Status: ...; graden: ... met state en heating.
if voert een blok uit wanneer de voorwaarde waar is.else kiest de andere route; de inspringing koppelt code aan een blok.Hierna voeg je met elif meer dan twee mogelijkheden aan een keuze toe.
Voer je code uit en ontdek
wat je hebt gemaakt.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.