Ga naar hoofdinhoud

1.8 Debuggen: fouten opsporen

Programmeren is vooral fouten oplossen. Dat heet debuggen. In dit hoofdstuk leer je hoe je fouten kunt opsporen in je play-programma.

Stap 1: Lees de foutmelding

Python vertelt je altijd wat er mis is. Voer de code hieronder uit:

Spel laden...

Wat zie je in het console-paneel onder het scherm?

Klik hier voor het antwoord

In het console-paneel verschijnt een foutmelding. De belangrijkste regel is:

AttributeError: 'Circle' object has no attribute 'colr'. Did you mean: 'color'?

Python vertelt je precies wat er mis is: colr bestaat niet, en hij suggereert zelfs color. Typ- en spelfouten zijn de meest voorkomende fouten.

Lokaal werken?

In Thonny of VS Code verschijnt de foutmelding in de terminal onderaan je scherm. De inhoud is hetzelfde.

Stap 2: Gebruik print()

Als je niet weet welke waarde een variabele heeft, gebruik dan print():

Spel laden...

In het console-paneel onder het scherm zie je dan de waarden. Dit is handig als je programma iets anders doet dan je verwacht.

Stap 3: Gebruik .info()

Met .info() print je in één keer alle informatie over een vorm:

Spel laden...

Dit is veel sneller dan elke eigenschap apart te printen.

Tips voor debuggen

  1. Lees de foutmelding — Python vertelt je vaak precies wat er mis is en op welke regel
  2. Kijk naar het regelnummer — De foutmelding toont op welke regel de fout zit
  3. Gebruik print() — Print variabelen om te zien welke waarden ze hebben
  4. Test kleine stukken — Voeg code stap voor stap toe, niet alles tegelijk
  5. Vergelijk met de cheatsheet — Kijk of je de juiste namen en parameters gebruikt

Opdracht 1.8.a: Fout opsporen

In de code hieronder zitten twee fouten. Kun je ze vinden en oplossen?

Spel laden...
Klik hier voor een tip.

Voer de code uit en lees de foutmelding. De eerste fout gaat over een verkeerde parameternaam.

Klik hier voor de oplossing.
Spel laden...

De fouten waren:

  1. colour moet color zijn (Engelse spelling zonder u)
  2. words=cirkel.x geeft een fout omdat words tekst verwacht, niet een getal. Met str() maak je er tekst van.