edubun
Nederlands

Herhalen met for en while

range(5) levert 0, 1, 2, 3 en 4: vijf getallen, zonder 5.

Voer een lus van drie regels uit en zie total groeien

Kopieer dit programma naar IDLE en voer het vóór de uitleg uit. Verander de lijst daarna in je eigen getallen en voer opnieuw uit.

total = 0
for n in [3, 5, 2]:
    total = total + n
    print(n, total)
print("klaar", total)
Uitvoer
3 3
5 8
2 10
klaar 10

De for-regel neemt de lijstitems één voor één. Elke doorgang verwijst n naar het volgende item en voert Python de ingesprongen regels eronder één keer uit met die waarde. Eén doorgang door de ingesprongen regels heet een iteratie. Na het laatste item gaat Python verder met de eerste niet-ingesprongen regel, dus "klaar" wordt eenmaal aan het einde afgedrukt. Een spoortabel maakt het patroon duidelijk.

Doorgangntotal na de doorgangAfgedrukt
(ervoor)0
1333 3
2585 8
32102 10
(erna)10klaar 10
Elke doorgang zet het volgende item in n en telt dat bij total op. Het lopende totaal is het meest voorkomende luspatroon.

De variabele total heet een accumulator: zij begint vóór de lus op 0 en verzamelt bij elke doorgang iets. De regel total = total + n is zo gangbaar dat Python een korte vorm heeft, total += n. Tellen werkt hetzelfde met count += 1.

range() maakt de getallen voor je

Loop door range() om iets een vast aantal keren te herhalen. range(5) geeft 0, 1, 2, 3, 4: vanaf 0 tot vóór 5, net als een slice. range(1, 6) geeft 1 tot 5. Een derde getal stelt de stap in, dus range(0, 10, 2) geeft de even getallen 0 tot 8. De tafel van 7, die elke Koreaanse leerling in het tweede leerjaar opzegt, is een lus van twee regels.

for i in range(1, 10):
    print(7, "x", i, "=", 7 * i)
Uitvoer
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63

Een for-lus kan ook door de tekens van een string lopen, wat letters tellen gemakkelijk maakt.

count = 0
for ch in "banana":
    if ch == "a":
        count += 1
print(count)
Uitvoer
3

while herhaalt zolang een voorwaarde True blijft

Een while-lus heeft geen lijst om te doorlopen. Zij controleert een voorwaarde, voert bij True de ingesprongen regels uit en controleert weer, steeds opnieuw. Dat past als je het aantal doorgangen niet vooraf weet, zoals ‘blijf sparen tot het totaal 50 000 won bereikt’. Iets binnen de lus moet de voorwaarde veranderen, anders eindigt de lus nooit. Stop in dat geval het programma met Ctrl+C.

saved = 0
weeks = 0
while saved < 50000:
    saved += 12000
    weeks += 1
print(weeks, saved)
Uitvoer
5 60000

break verlaat een lus meteen, ook middenin. Dat helpt bij zoeken als je kunt stoppen zodra je vindt wat je wilt. De lus hieronder stopt bij de eerste score onder 60 en bekijkt de 88 nooit.

for s in [72, 91, 55, 88]:
    if s < 60:
        print("eerste onder 60:", s)
        break
    print("ok", s)
Uitvoer
ok 72
ok 91
eerste onder 60: 55
for x in ...Voert voor elk item de ingesprongen regels eenmaal uit
range(a, b)Gehele getallen vanaf a tot, maar niet inclusief, b
whileHerhaalt zolang de voorwaarde True is
accumulatorEen variabele die over doorgangen een totaal verzamelt
+=total += n is kort voor total = total + n
breakVerlaat de lus onmiddellijk
  1. Wat drukt deze code af?
    for i in range(3):
        print(i)
    • 0
      1
      2
    • 1
      2
      3
    • 0
      1
      2
      3
    • 3
  2. Wat drukt deze code af?
    total = 0
    for n in range(1, 5):
        total += n
    print(total)
  3. Wat drukt deze code af?
    print(list(range(0, 10, 3)))
  4. Wat drukt deze code af?
    total = 0
    for n in [1, 2, 3]:
        total += n
        print(total)
    • 6
    • 1
      3
      6
    • 1
      2
      3
    • 0
      1
      3
  5. Wat drukt deze code af?
    count = 0
    for ch in "seoul":
        if ch in "aeiou":
            count += 1
    print(count)
  6. Wat drukt deze code af?
    n = 1
    while n < 20:
        n = n * 2
    print(n)
  7. Wat drukt deze code af?
    for s in [5, 8, 3, 9]:
        if s > 6:
            print(s)
            break
  8. Hoe vaak drukt deze code hi af?
    for i in range(2, 8):
        print("hoi")
  9. Wat drukt deze code af?
    word = ""
    for ch in "abc":
        word = ch + word
    print(word)
  10. Zet de regels op volgorde zodat het programma de som van 1 tot 100 afdrukt.
    Uitvoer
    5050
Veelgemaakte fouten
  • ‘range(1, 10) gaat tot en met 10.’ Het stopt vóór 10, dus de laatste waarde is 9. Schrijf range(1, 11) voor 1 tot en met 10.
  • ‘Mijn while-lus is goed; het duurt alleen lang.’ Als niets in de lus de voorwaarde verandert, stopt zij nooit. Controleer of de voorwaardevariabele elke doorgang wordt bijgewerkt en druk op Ctrl+C om een op hol geslagen lus te stoppen.
  • ‘print binnen of buiten de lus zetten maakt niets uit.’ Ingesprongen onder de for wordt het bij elke doorgang uitgevoerd; aan de linkerrand eenmaal na de lus. Kies of je elke stap of alleen het eindantwoord wilt.
Voor de docentLaat leerlingen de lus vóór de uitleg uitvoeren en vul dan samen de spoortabel op het bord in. Die maakt ‘de ingesprongen regels worden eenmaal per item uitgevoerd’ concreet. De twee plekken waar leerlingen uitglijden zijn de stopwaarde van range() en de inspringing van de laatste print. Laat hen bij while vóór Run de regel aanwijzen die de voorwaarde uiteindelijk False maakt. De tafel van 7 geeft Koreaanse leerlingen snel vertrouwen: ze kennen de verwachte uitvoer uit het hoofd en controleren die in één oogopslag.
Belangrijkste punten
  • for x in list: voert de ingesprongen regels eenmaal per item uit.
  • range(a, b) stopt vóór b; range(n) is 0 tot n - 1.
  • Een accumulator begint vóór de lus en groeit erin.
  • while herhaalt zolang een voorwaarde True is; iets moet die veranderen.
  • break verlaat de lus meteen.
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