5c And, or en elif
Met if/else kies je tussen twee paden. Met and en or combineer je voorwaarden, en met elif maak je meer dan twee takken.
Twee voorwaarden combineren: and en or
| Operator | Wanneer True? |
|---|---|
and | Als beide voorwaarden True zijn |
or | Als minstens één voorwaarde True is |
not | Als de voorwaarde niet True is: not True is False |
leeftijd = 16
heeft_kaartje = True
if leeftijd >= 14 and heeft_kaartje:
print("Je mag naar binnen!")
else:
print("Sorry, je mag er niet in.")
Twijfel je tussen and en or? Vraag je dan af: moet het allebei, of is één genoeg?
Meer dan twee takken: elif
if/else geeft je twee opties. Met elif (een afkorting van else if) voeg je extra takken toe:
score = 65
if score >= 80:
print("Uitstekend!")
elif score >= 55:
print("Voldoende.")
else:
print("Helaas, onvoldoende.")
Python kijkt de voorwaarden van boven naar beneden na en stopt zodra er één True is. De andere takken worden dan niet meer gecheckt. Je kunt zoveel elif-takken plaatsen als je wilt.
score = 90
if score >= 55:
print("Voldoende")
elif score >= 80:
print("Uitstekend")
Speel dit eerst na zonder computer, met getallenkaartjes en poortwachters: De beslismachine. Je docent kan de hand-out printen.
Er gaat iets mis
De variabele maar één keer genoemd
leeftijd = 15
if leeftijd >= 12 and <= 19:
print("Tiener")
Uitvoer:
SyntaxError: invalid syntax
Aan elke kant van and staat een hele vergelijking. Schrijf leeftijd >= 12 and leeftijd <= 19.
or met maar één vergelijking
kleur = "groen"
if kleur == "rood" or "blauw":
print("Mooie kleur")
Uitvoer:
Mooie kleur
Geen foutmelding, en toch klopt het niet: groen is geen rood of blauw. Python leest dit als kleur == "rood" of "blauw", en een tekst die niet leeg is telt als True. Vergelijk aan beide kanten: kleur == "rood" or kleur == "blauw".
Opdracht 5c.1: Beide tegelijk
Print True als zowel score minstens 7 is én aanwezig True is.
# Schrijf hier je code
Klik hier voor een tip.
Combineer met and: score >= 7 and aanwezig. Dat resultaat is meteen een boolean.
Klik hier voor de oplossing.
score = 8
aanwezig = True
print(score >= 7 and aanwezig)
score = 8 aanwezig = True print(score >= 7 and aanwezig)
Opdracht 5c.2: Scorebeoordeling
Beoordeel een score van 0 tot 100 met if/elif/else: 80 of hoger → Uitstekend, 55 of hoger → Voldoende, anders → Onvoldoende.
Verwachte uitvoer (bij score = 70):
Voldoende
# Schrijf hier je code
Klik hier voor een tip.
Eerst de strengste voorwaarde (>= 80), daarna elif score >= 55:, daarna else.
Klik hier voor de oplossing.
score = 70
if score >= 80:
print("Uitstekend")
elif score >= 55:
print("Voldoende")
else:
print("Onvoldoende")
score = 70
if score >= 80:
print("Uitstekend")
elif score >= 55:
print("Voldoende")
else:
print("Onvoldoende")Opdracht 5c.3: Strenge toegangscontrole
Bouw een toegangscontrole die per reden uitlegt waarom iemand niet binnen mag. Gebruik op_lijst en leeftijd (drempel: 14).
Verwachte uitvoer (bij op_lijst = False, leeftijd = 12):
Sorry Alex, je staat niet op de lijst én je bent te jong.
Verwachte uitvoer (bij op_lijst = False, leeftijd = 18):
Sorry Alex, je staat niet op de gastenlijst.
Verwachte uitvoer (bij op_lijst = True, leeftijd = 12):
Sorry Alex, je bent te jong (minimum: 14).
Verwachte uitvoer (bij op_lijst = True, leeftijd = 18):
Welkom Alex!
# Schrijf hier je code
Klik hier voor een tip.
not op_lijst is True als de gast niet op de lijst staat. Vier takken op volgorde:
not op_lijst and leeftijd < 14→ beide problemennot op_lijst→ alleen lijst-probleemleeftijd < 14→ alleen leeftijd-probleemelse→ welkom
Klik hier voor de oplossing.
naam = "Alex"
leeftijd = 12
op_lijst = False
if not op_lijst and leeftijd < 14:
print(f"Sorry {naam}, je staat niet op de lijst én je bent te jong.")
elif not op_lijst:
print(f"Sorry {naam}, je staat niet op de gastenlijst.")
elif leeftijd < 14:
print(f"Sorry {naam}, je bent te jong (minimum: 14).")
else:
print(f"Welkom {naam}!")
In de volgende les leer je de for-loop: een rijtje getallen of namen aflopen zonder elke regel zelf te typen.
naam = "Alex"
leeftijd = 12
op_lijst = False
if not op_lijst and leeftijd < 14:
print(f"Sorry {naam}, je staat niet op de lijst én je bent te jong.")
elif not op_lijst:
print(f"Sorry {naam}, je staat niet op de gastenlijst.")
elif leeftijd < 14:
print(f"Sorry {naam}, je bent te jong (minimum: 14).")
else:
print(f"Welkom {naam}!")Bij binair zoeken kiest een if/elif/else elke stap welke helft van de lijst mag blijven — drie uitkomsten, dus drie takken.