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
- Lees de foutmelding — Python vertelt je vaak precies wat er mis is en op welke regel
- Kijk naar het regelnummer — De foutmelding toont op welke regel de fout zit
- Gebruik
print()— Print variabelen om te zien welke waarden ze hebben - Test kleine stukken — Voeg code stap voor stap toe, niet alles tegelijk
- 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:
colourmoetcolorzijn (Engelse spelling zonder u)words=cirkel.xgeeft een fout omdatwordstekst verwacht, niet een getal. Metstr()maak je er tekst van.