Bouwsteen 2 — beide accumulators updaten
Leerdoel: je voegt een for-lus met twee vergelijkingen per element
toe, zodat zowel klein als groot aangepast worden.
Wat we willen
Per element checken: is het kleiner dan onze huidige klein? Is het
groter dan onze huidige groot? Zo ja → updaten.
Voorspel
Wat denk je dat dit print? Volg met pen en papier mee.
lijst = [5, 2, 8, 1, 7, 4]
klein = groot = lijst[0]
for waarde in lijst:
if waarde < klein:
klein = waarde
elif waarde > groot:
groot = waarde
print(klein, groot)
Antwoord
1 8
Tabel:
| waarde | klein vóór | groot vóór | actie | klein na | groot na |
|---|---|---|---|---|---|
| 5 | 5 | 5 | geen update | 5 | 5 |
| 2 | 5 | 5 | 2 < 5 → klein = 2 | 2 | 5 |
| 8 | 2 | 5 | 8 > 5 → groot = 8 | 2 | 8 |
| 1 | 2 | 8 | 1 < 2 → klein = 1 | 1 | 8 |
| 7 | 1 | 8 | 7 > 8? nee — geen update | 1 | 8 |
| 4 | 1 | 8 | 4 < 1? nee — geen update | 1 | 8 |
Eind: klein = 1, groot = 8. ✅
Run
Waarom elif en niet twee aparte if's?
Twee aparte if's zou ook werken — maar dan doe je voor elk element
twee vergelijkingen, ook als de eerste al raak was. Met elif slaan we
de tweede check over als de eerste al een update deed.
Waarom is elif veilig?
Een waarde kan niet tegelijk kleiner zijn dan klein én groter dan
groot. Want: klein <= groot. Dus als waarde < klein (kleiner dan de
huidige ondergrens), dan zeker waarde < groot — en dus zeker niet
waarde > groot. De elif-check kunnen we veilig overslaan.
Experimenteer
Test extreme inputs:
Wat zie je?
- Standaard lijst → klein=1, groot=8.
- Eén element → klein=groot=42 (de lus doet 1 iteratie zonder updates).
- Alleen negatief → klein=-9, groot=-1. Geen bug: we starten op
lijst[0]. - Allemaal gelijk → klein=groot=3.
Wat nu nog mist
We hebben de logica. Maar we printen alleen — we geven de waardes niet terug. In de volgende stap stoppen we het in een functie die een tuple returnt.
Door naar bouwsteen 3: tuple teruggeven →