edubun
Nederlands

Beslissingen nemen met if

Python controleert if en elke elif van bovenaf en voert alleen de eerste tak met een ware voorwaarde uit; de rest wordt overgeslagen.

Een toegangsprijs afhankelijk van leeftijd

Probeer vóór nieuwe syntaxis dit probleem. Een klein wetenschapsmuseum (verzonnen voor dit voorbeeld) is gratis voor kinderen onder 7, kost 3000 won voor leeftijden 7 tot 18 en 5000 won voor alle anderen. Bij een gegeven leeftijd moet het programma de prijs afdrukken. Schrijf de regel eerst in gewone woorden als lijst met vragen, in de volgorde waarin je ze aan de kassa zou stellen.

Je schreef waarschijnlijk iets als: is de bezoeker jonger dan 7? Zo ja, gratis en stop. Zo niet, 18 of jonger? Zo ja, 3000 won en stop. Anders 5000 won. Dat is al het programma. Python schrijft ‘als’, ‘anders als’ en ‘anders’ als if, elif en else.

age = 12
if age < 7:
    price = 0
elif age <= 18:
    price = 3000
else:
    price = 5000
print(price)
Uitvoer
3000

Drie syntaxisdetails tellen. Elke voorwaarderegel eindigt met een dubbele punt. De regels van een tak springen in; de Python-handleiding raadt vier spaties aan. Wanneer de inspringing eindigt, eindigt de tak. Daarom wordt print(price) bij elke leeftijd uitgevoerd. En maar één tak wordt uitgevoerd: bij leeftijd 12 is de eerste voorwaarde False en de tweede True, dus price wordt 3000 en de else wordt nooit bekeken.

Vergelijkingen geven True of False

OperatorBetekenisVoorbeeldResultaat
==gelijk aan5 == 5True
!=niet gelijk aan5 != 5False
<kleiner dan3 < 7True
<=kleiner dan of gelijk aan7 <= 7True
>groter dan3 > 7False
>=groter dan of gelijk aan18 >= 19False

Let op het dubbele gelijkteken. Eén = kent toe, twee == vergelijken. Strings kun je ook vergelijken: "kimchi" == "Kimchi" is False omdat hoofdletters als andere tekens tellen.

De volgorde van elif-regels verandert het antwoord

Omdat Python bij de eerste True stopt, telt de takvolgorde. Een score beoordelen is het klassieke geval. Controleer eerst op 90 of meer, dan 80, dan 70. Zet de 70-test eerst en wordt een score van 95 daardoor opgevangen en krijgt die een C, omdat 95 >= 70 ook True is.

Een if/elif/else-keten is een ladder. Python gaat omlaag tot een voorwaarde True is, voert die ene tak uit en springt voorbij de rest.
score = 95
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "D"
print(grade)
Uitvoer
A

and, or, not verbinden voorwaarden

and is alleen True als beide kanten True zijn. or is True als minstens één kant dat is. not keert True en False om. Een voorwaarde als ‘tussen 13 en 18’ kun je schrijven als age >= 13 and age <= 18 of de kortere Python-vorm 13 <= age <= 18. Een voorwaarde kan ook binnen een andere tak staan, nesting genoemd. Het Koreaanse informaticacurriculum voor de onderbouw noemt beide, logische bewerkingen en geneste besturingsstructuren, in een programmeerstandaard.

age = 15
has_ticket = True
if 13 <= age <= 18 and has_ticket:
    print("Toegang voor tieners")
if not has_ticket or age < 7:
    print("Ga naar de balie")
else:
    print("Ga naar binnen")
Uitvoer
Toegang voor tieners
Ga naar binnen
ifVoert ingesprongen regels alleen uit als de voorwaarde True is
elif‘Anders, als’: alleen getest als alles erboven False was
elseWordt uitgevoerd als geen voorwaarde erboven True was
==Vergelijkt twee waarden; = kent toe
and / or / notBeide waar / minstens één waar / het tegenovergestelde
inspringingVier spaties die aangeven welke regels bij een tak horen
  1. Wat drukt deze code af?
    x = 8
    if x > 5:
        print("big")
    else:
        print("small")
  2. Wat drukt deze code af?
    age = 7
    if age < 7:
        print("gratis")
    elif age <= 18:
        print("3000")
    else:
        print("5000")
  3. Wat drukt deze code af?
    score = 85
    if score >= 70:
        print("C")
    elif score >= 80:
        print("B")
  4. Wat drukt deze code af?
    x = 3
    if x > 5:
        print("A")
    print("B")
    • A
      B
    • B
    • A
    • (niets)
  5. Wat drukt deze code af?
    print(5 == 5.0, "a" == "A")
  6. Wat drukt deze code af?
    t = 30
    print(t > 25 and t < 28)
  7. Wat drukt deze code af?
    rain = False
    print(not rain)
  8. Wat drukt deze code af?
    n = 14
    if n % 2 == 0:
        if n > 10:
            print("big even")
        else:
            print("small even")
    else:
        print("odd")
  9. Welke regel controleert correct of x gelijk is aan 10?
    • if x = 10:
    • if x == 10:
    • if x == 10
    • if (x = 10)
  10. Zet de regels op volgorde zodat het programma "Even" afdrukt.
    Uitvoer
    Even
Veelgemaakte fouten
  • ‘if score = 90: controleert of score 90 is.’ Eén = is toekenning. Python stopt met SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? Schrijf if score == 90:.
  • ‘if answer == "yes" or "y": vangt beide antwoorden.’ Python leest dit als (answer == "yes") or ("y") en een niet-lege string zoals "y" telt als waar, dus de voorwaarde is altijd waar. Schrijf answer == "yes" or answer == "y".
  • ‘Inspringing is alleen voor het uiterlijk.’ In Python bepaalt die welke regels bij de tak horen. Weglaten stopt het programma met IndentationError: expected an indented block after 'if' statement on line 2.
Voor de docentBeginnen bij de kassa werkt doordat leerlingen de beslissing al kennen; alleen de schrijfwijze is nieuw. Laat hen de regel eerst hardop op volgorde zeggen. Voer het verkeerde cijferprogramma bewust uit: het drukt C voor 85 af zonder foutmelding, een eerste kennismaking met een logische fout. Test bij controle de grenswaarden (6, 7, 18, 19 bij de toegang), want daar schuilen off-by-one-fouten tussen < en <=. Het Koreaanse informaticacurriculum voor de onderbouw heeft een standaard over logische bewerkingen en geneste besturingsstructuren.
Belangrijkste punten
  • if / elif / else: alleen de eerste ware tak wordt uitgevoerd.
  • Voorwaarderegels eindigen op : en de tak springt vier spaties in.
  • == vergelijkt; = kent toe.
  • Zet de strengste voorwaarde eerst in een elif-keten.
  • and, or en not combineren voorwaarden.
Bronnen van deze cursus (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Geraadpleegd: 2026-10-19