Ga naar hoofdinhoud

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​

OperatorWanneer True?
andAls beide voorwaarden True zijn
orAls minstens één voorwaarde True is
notAls 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")
Voorspel
Wat zet dit programma op het scherm?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.
Eerst op papier

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:

  1. not op_lijst and leeftijd < 14 → beide problemen
  2. not op_lijst → alleen lijst-probleem
  3. leeftijd < 14 → alleen leeftijd-probleem
  4. else → 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}!")
Waar kom je dit later weer tegen?

Bij binair zoeken kiest een if/elif/else elke stap welke helft van de lijst mag blijven — drie uitkomsten, dus drie takken.