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.

1. return -1 op de verkeerde inspringing

Geen Python-foutmelding — wél een logische fout. De functie returnt te vroeg en geeft daardoor verkeerde antwoorden.

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

Door de inspringing zit return -1 binnen de for-lus. Bij de eerste iteratie returnt de functie al — meestal verkeerd.

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

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

2. == vs =

SyntaxError: invalid syntax

Of erger: geen foutmelding maar verkeerd gedrag.

Voorbeeld + uitleg
if waarde = doel: # SyntaxError
return i
  • = is toekenning: x = 5 zet de waarde 5 in x.
  • == is vergelijking: if x == 5 vraagt of x gelijk is aan 5.

In een if heb je een vergelijking nodig.

Fix:

if waarde == doel:
return i

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

3. IndexError: list index out of range

IndexError: list index out of range

Je vraagt om lijst[i] voor een i die niet bestaat.

Voorbeeld + uitleg
lijst = [10, 20, 30]
for i in range(len(lijst) + 1): # 0, 1, 2, 3 — te ver!
print(lijst[i])

Bij i = 3 bestaat lijst[3] niet (geldige indexen zijn 0, 1, 2). Python gooit IndexError.

Fix: laat de + 1 weg. range(len(lijst)) produceert al precies 0, 1, …, len-1.

Beter nog: gebruik for waarde in lijst: of for i, waarde in enumerate(lijst):. Dan loop je gegarandeerd niet te ver — Python regelt het zelf.

Door naar stap 11: cheatsheet →