Een mogelijke oplossing voor dit probleem vind je hier onder
def tussenvoegen(steden, stad):
i = 0
while i < len(steden) and steden[i] < stad:
i += 1
steden.insert(i,stad)
Merk op dat insert(..,..)
ook kan gebruikt worden om een element achteraan een lijst toe te voegen - wanneer
de eerste parameter gelijk is aan de lengte van de lijst.
Een andere oplossing maakt gebruik van een Booleaanse (logische, False/True) variabele:
def tussenvoegen(steden, stad):
gevonden = False
i = 0
while i < len(steden) and not gevonden:
if steden[i] > stad:
gevonden = True
else:
i += 1
steden.insert(i,stad)
Onze voorkeur gaat echter uit naar de eerste oplossing, omdat die eenvoudiger te begrijpen is, en er is ook geen nood aan een extra (boolean) variabele.
Een derde oplossing die je vaak op het Internet ontmoet, vinden we echter helemaal niet goed:
def tussenvoegen(steden, stad):
for i in range(len(steden)):
if steden[i] > stad:
break
steden.insert(i,stad)
Je mag een for-lus enkel gebruiken wanneer je alle elementen uit de range effectief zult overlopen. Het is hoe dan
ook te vermijden om uit een lus te springen met break
of return
. Je mag om die reden bij je leerlingen
gerust het bestaan van break
verzwijgen.