Condities in Python
In programma's moeten onder bepaalde omstandigheden besluiten genomen over wat een programma moet gaan doen. Deze omstandigheden zien we als condities.
Bijvoorbeeld, je wil een programma´tje schrijven, wat een bepaalde tekst genereerd, afhankelijk van een bepaalde leeftijd. In de volgende tabel zie je een aantal condities, met de bijhorende tekst.
Leeftijd | Tekst |
---|---|
0..11 | Je bent nog een kind |
12..17 | Je bent een tiener |
18..20 | Je bent bijna volwassen |
21… | Je bent volwassen |
In je programma ga je de ingegeven leeftijd controleren en afhankelijk van deze leeftijd de juiste tekst genereren.
Conditioneel statement
Een conditioneel statement zetten we op als volgt:
- Als er een 'bepaalde conditie' geldt, dan ¨Doe iets“, anders “Doe wat anders”
Syntax:
if "conditie¨: doe iets doe nog iets else: doe wat anders Nu volgt de rest van het programma.
De eerste regel bevat de “if” conditie, afgesloten met de dubbele punt!
De daarop volgende regel is ingesprongen (vaak een 'tab'). Dit is de éérste instruktie, die uitgevoerd moet worden als de conditie waar (True) is. Als er meer statements moeten volgen voor de waar conditie, dan moeten deze volgende statements even veel ingesprongen zijn. Wanneer je terug gaat naar het vorige inspring niveau, dan is de “if” conditie afhgelopen.
Optioneel kun je nu een aantal instrukties invoeren, die het programma uit moet voeren als de if-conditie niet waar (not True of False) is. Dit doe je met het “else” statement, wat eveneens afgesloten moet worden met een dubbele punt. Daarna spring je op de volgende regel weer in, en geef je een of meerdere instrukties voor de “niet waar” conditie.
Wanneer je nu weer terug gaat naar het standaard inspring niveau, is de if instruktie afgelopen en gaat het programma verder met de volgende instrukties.
Deze syntax moet gevolgd worden, anders zal de interprenter een syntax error geven tijdens uit\voering!
Voorbeeld: Geef twee getallen op en voer een deling uit. Delen door nul mag niet, dus moet je hierop checken!
- deling.py
#! /usr/bin/env python3 # ========================= # Programma naam: deling.py # Vraag twee getallen in te geven. x = float(input("x: ")) y = float(input("y: ")) # Deel x door y, maar controleer op y is nul if y == 0: print(y is nul, delen door nul mag niet !) else: print("De deling van", x, ":", y, "is:", x/y) print("Klaar.")
Meerdere conditionele statements
Wanneer je meerdere condities moet controleren, kun je uiteraard in het “else” stukje een nieuw “if¨ statement neerzetten, maar dat kan snel verwarring op gaan leveren. Dit soort programmeren noemen we geneste condities.
if conditie1: doe aktie een else: if conditie2: doe aktie twee else: die aktie drie einde conditioneel statement
Uiteraard ontkom je niet altijd aan geneste condities, maar we kunnen wel eenvoudiger meerdere contities controleren met behulp van de “elif” (else-if) instruktie. De syntax is als volgt:
if conditie1: doe aktie een elif conditie2: doe aktie twee else: die aktie drie einde conditioneel statement
Je ziet dat deze struktuur duidelijker laat zien, wat bij elkaar hoort. De code is hier netjes uitgelijnd!
Als voorbeeld, gaan we terug naar de leeftijd tabel op de top van deze pagina: Vraag om de naam en de leeftijd van de persoon achter het toetsenbord en geef de leeftijds categorie
- leeftijd.py
#! /usr/bin/env python3 # =========================== # Programma naam: leeftijd.py # Vraag om de naam en de leeftijd naam = input("Hallo, wat is jouw naam: ") leeftijd = int(input("en wat is je leeftijd: ")) # Deel nu de persoon in naar de leeftijds categorie # 0..11: Kind if leeftijd <= 11: categorie = "een kind" # 12..17: Tiener elif leeftijd <= 17: categorie = "een tiener" # 18..20: Bijna volwassen elif leeftijd <=20: categorie = "bijna volwassen" # 21..: Volwassen else: categorie = "volwassen" # Geef het resultaat weer, naam en categorie print("Hoi", naam, ", je bent", categorie, ".")
Opmerking:
Zoals je ziet, hoef je niet de complete range op te geven, mits je de juiste volgorde gebruikt. Zodra een conditie geldt, worden de instrukties behorend bij die conditie uitgevoerd. De andere condities worden daarna niet meer gecontroleerd.
Dus als de leeftijd in de range 0..11 ligt (leeftijd ⇐ 11), dan wordt alleen de instruktie categorie = “een kind” uitgevoerd. Ondanks dat de leeftijd ook kleiner/gelijk is dan twintig, wordt de tweede conditie toch niet meer gecheckt. Daarom hoef je bij de tweede conditie geen ondergrens te geven. Deze tweede conditie wordt namelijk pas gecheck als geldt: leeftijd > 11.