Ga naar hoofdinhoud

Er gaat iets mis — top-3 fouten

Leerdoel: je herkent veelvoorkomende foutmeldingen en begrijpt waarom ze optreden. Een fout is geen tegenslag — het is informatie.

return -1 op de verkeerde inspringing

Geen foutmelding, maar wel een logische fout: de functie returnt te vroeg en geeft daardoor verkeerde antwoorden.

Oorzaak: return -1 staat binnen de for-lus en wordt al bij de eerste iteratie uitgevoerd.

Oplossing: zorg dat return -1 even ver ingesprongen staat als for, niet als if. In Python is inspringing geen versiering — het bepaalt de structuur.

# FOUT
def zoek(lijst, doel):
for i, waarde in enumerate(lijst):
if waarde == doel:
return i
return -1 # inspringing fout: dit zit IN de for

# GOED
def zoek(lijst, doel):
for i, waarde in enumerate(lijst):
if waarde == doel:
return i
return -1 # op functie-niveau, na de for

Meer uitleg: Bouwsteen 4 — niet gevonden.

SyntaxError: == vs =

SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

Oorzaak: = is toekenning (x = 5 zet de waarde 5 in x); == vergelijkt: if x == 5 vraagt of x gelijk is aan 5. In een if heb je een vergelijking nodig.

Oplossing: gebruik == in vergelijkingen.

# FOUT
if waarde = doel:
return i

# GOED
if waarde == doel:
return i

Onthouden: één = is toekennen, twee == is vergelijken.

-1 als index gebruiken zonder te controleren

Geen foutmelding, maar wel een stille fout: je zoekt iets dat er niet is, en het programma print vrolijk een antwoord.

Oorzaak: zoek geeft -1 terug bij "niet gevonden", en lijst[-1] is in Python gewoon geldig en betekent het laatste element. Wie het resultaat meteen als index gebruikt, krijgt dus een echte waarde terug voor iets dat niet in de lijst staat.

Oplossing: controleer eerst op -1 voordat je de index gebruikt.

def zoek(lijst, doel):
for i, waarde in enumerate(lijst):
if waarde == doel:
return i
return -1

lijst = [10, 20, 30]

# FOUT
print("gevonden:", lijst[zoek(lijst, 99)]) # gevonden: 30

# GOED
index = zoek(lijst, 99)
if index == -1:
print("niet gevonden") # niet gevonden
else:
print("gevonden:", lijst[index])

Door naar cheatsheet.