Ga naar hoofdinhoud

Bouwsteen 2 — beide accumulators updaten

Hier bouw je op verder

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, dan 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:

waardeklein vóórgroot vóóractieklein nagroot na
555geen update55
2552 < 5 → klein = 225
8258 > 5 → groot = 828
1281 < 2 → klein = 118
7187 < 1? nee, 7 > 8? nee18
4184 < 1? nee, 4 > 8? nee18

Eind: klein = 1, groot = 8.

Run

Python
Code-omgeving wordt voorbereid…

Waarom elif en niet twee aparte if's?

Twee aparte if's werken ook, maar dan doe je voor elk element twee vergelijkingen, ook als de eerste al raak was. Met elif sla je de tweede over zodra de eerste een update deed.

Waarom is elif veilig?

Een waarde kan niet tegelijk kleiner zijn dan klein en groter dan groot, want klein is nooit groter dan groot. Zit een waarde onder klein, dan zit hij zeker ook onder groot. De tweede check kan dan niets meer opleveren.

Experimenteer

Test extreme inputs:

Python
Code-omgeving wordt voorbereid…
Wat zie je?
  • De standaardlijst geeft klein=1 en groot=8.
  • Bij één element blijven beide op 42 staan; de lus doet één ronde zonder updates.
  • Bij alleen negatieve getallen komt er klein=-9 en groot=-1 uit. Geen bug: je start op lijst[0] en niet op nul.
  • Zijn ze allemaal gelijk, dan zijn klein en groot allebei 3.

Wat nu nog mist

De logica klopt, maar hij print alleen. De aanroeper krijgt de waardes niet terug. In de volgende stap stoppen we dit in een functie die er twee teruggeeft.

Door naar bouwsteen 3: tuple teruggeven.