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. Bekijk dit voorbeeld:

import play

cirkel = play.new_circle(color='red')
cirkel.colr = 'blue'

Wat denk je dat er gebeurt?

Klik hier voor het antwoord

Je krijgt een foutmelding:

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!

Stap 2: Gebruik print()

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

import play

cirkel = play.new_circle(x=100, y=50)

print(cirkel.x)
print(cirkel.y)
print(cirkel.color)

In je console 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:

import play

cirkel = play.new_circle(color='red', x=50, radius=30)

cirkel.info()

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?

import play

cirkel = play.new_circle(colour='red', radius=30)
cirkel.x = 100

tekst = play.new_text(words=cirkel.x)
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!
import play

cirkel = play.new_circle(color='red', radius=30)
cirkel.x = 100

tekst = play.new_text(words=str(cirkel.x))

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.