Werkboek — Hoofdstuk 4: Lussen en iteraties
Let op: alle programmacode schrijf je in het Engels (zoals in het boek). De uitleg en opdrachten zijn in het Nederlands.
Doel van dit hoofdstuk
- Herhalen met
whileen tellen/doorlopen metfor. range(start, stop, step)effectief gebruiken.- Begrijpen en toepassen van
breakencontinue. - Handige helpers gebruiken:
enumerate, iteratie over dicts, geneste lussen. - Het patroon
for-elseinzetten bij zoekproblemen.
Richtlijnen
- Gebruik duidelijke variabelen- en functienamen (Engels).
- Print nette, betekenisvolle output zodat je resultaat te controleren is.
- Hou je lussen klein en leesbaar; vermijd onnodige
continue/break.
Oefening 1 — Tellen met range
Print de getallen 1 t/m 10 op één regel, gescheiden door spaties. Gebruik een for-lus met range.
Oefening 2 — Som 1..n (accumulatie)
Vraag een positief geheel getal n (ga uit van geldige invoer in deze oefening) en bereken de som van 1..n met een for-lus. Print de som.
Oefening 3 — While-teller omlaag
Print een aftelling van 5 naar 1 met een while-lus en eindig met Liftoff!.
Oefening 4 — Alleen even getallen (continue)
Print de even getallen van 1..20 met een while-lus. Gebruik continue om oneven getallen over te slaan.
Oefening 5 — Eerste veelvoud vinden (for-else)
Zoek in 1..50 naar het eerste getal dat deelbaar is door 7 én 5. Print Found: <getal> als het bestaat; anders No match. Gebruik een for met een else-deel (dus break bij succes, anders valt het else-blok in).
Oefening 6 — Genummerde lijst (enumerate)
Gegeven een lijst names = ["Ava", "Bo", "Cid", "Dia"]. Print elke naam genummerd vanaf 1 in de vorm 1. Ava, 2. Bo, ... Gebruik enumerate(..., start=1).
Oefening 7 — Itereren over dict
Gegeven user = {"name": "Liam", "age": 31, "city": "Rotterdam"}. Print elke sleutel en waarde op een eigen regel in de vorm name: Liam.
Oefening 8 — Tafel van vermenigvuldiging (genest)
Print een 10×10 vermenigvuldigingstafel (1..10 × 1..10). Gebruik twee geneste for-lussen en maak kolommen netjes met een breedte van 4 tekens. Tip: print(f"{value:>4}", end="") en na een rij print() voor de newline.
Oefening 9 — Invoer tot leeg (sentinel)
Lees regels in van de gebruiker tot een lege regel wordt ingevoerd. Tel hoeveel niet-lege regels gegeven zijn en print Count: <aantal>. Gebruik een while True-lus met break.
Oefening 10 — Filter en transformeer
Gegeven nums = [3, 8, 1, 7, 2, 10, 5].
- Bouw met een
for-lus een nieuwe lijstevensmet alleen de even getallen. - Bouw met een tweede
for-lus een lijstsquaresmet kwadraten van alle getallen uitnums. Print beide lijsten. (Gebruik hier nog géén list comprehensions.)
Uitdaging (optioneel) — FizzBuzz 1..100
Print de getallen 1..100, maar vervang veelvouden van 3 door Fizz, van 5 door Buzz, en van 3 én 5 door FizzBuzz. Alles op aparte regels. Gebruik een for-lus en duidelijke if/elif-logica.