Tussenvoegen in een lijst - oplossing

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.

→ Naar de vraag