0%

Welkom bij Python Land · oefening

Fouten horen bij programmeren

Je komt bij het programmeren al snel fouten tegen. Daarom is het nuttig om te leren wat ze eigenlijk betekenen.

Een fout betekent niet dat je slecht bent in programmeren. Het betekent dat Python iets tegenkwam wat het niet kon begrijpen of uitvoeren. De foutmelding is Pythons verslag van wat er gebeurde.

Ervaren programmeurs zien elke dag fouten. De nuttige vaardigheid is niet elke fout vermijden, maar weten wat je moet doen als er een verschijnt.

Veroorzaak expres een fout

Voer dit voorbeeld één keer uit terwijl het nog klopt:

Try it

Verwijder nu alleen het afsluitende aanhalingsteken na de punt en druk opnieuw op Run.

Python kan niet zien waar de tekst eindigt en laat daarom een foutmelding zien. De melding kan er ongeveer zo uitzien:

SyntaxError: unterminated string literal

Lees de melding en druk daarna op Reset code om het werkende voorbeeld terug te zetten.

Je hebt zojuist een fout veroorzaakt, bekeken en hersteld. Er is niets beschadigd.

Begin onderaan

Een foutmelding kan uit meerdere regels bestaan. Je hoeft ze nog niet allemaal te begrijpen. De laatste regel is meestal het beste startpunt.

Let op:

  • De naam van de fout, zoals SyntaxError of NameError, op de laatste regel

  • Een korte melding op die regel die beschrijft wat Python niet kon doen

  • Een regelnummer elders in de melding dat aangeeft waar Python het probleem opmerkte

Een SyntaxError betekent dat Python de structuur van de code niet kon begrijpen. Een ontbrekend aanhalingsteken of haakje kan zo’n fout veroorzaken.

Een NameError betekent dat Python een naam tegenkwam die het niet kent. Namen in Python zijn hoofdlettergevoelig, dus Print en print zijn verschillende namen.

Het volgende voorbeeld bevat een regel die met # begint. Dat is commentaar: een notitie voor iemand die de code leest, die Python niet uitvoert. Hier vertelt die regel de speelomgeving welke opzettelijke fout die kan verwachten.

Try it

Python kent de functie print met kleine letters, maar kent geen functie met de naam Print. De foutmelding kan ook print als mogelijke verbetering voorstellen. Ook zonder zo’n suggestie vertelt de onbekende naam je waar je kunt beginnen met het vergelijken van je code met een werkend voorbeeld.

Een vaste aanpak voor debuggen

Als een programma een foutmelding geeft, probeer dan deze stappen:

  1. Stop en lees de laatste regel van de foutmelding.

  2. Zoek de regel die Python noemt.

  3. Vergelijk die regel met een voorbeeld waarvan je weet dat het werkt.

  4. Verander één ding dat het probleem zou kunnen veroorzaken.

  5. Voer het programma opnieuw uit.

Eén ding tegelijk veranderen is belangrijk. Als je vijf dingen tegelijk verandert, weet je niet welke verandering het probleem heeft opgelost.

Je programma laat een foutmelding zien. Wat kun je het beste als eerste doen?

Herstel het programma

In de speelomgeving van deze les staan drie print-instructies. Bij een ervan zijn de hoofdletters niet goed gebruikt.

Druk op Run voordat je iets verandert. Python voert de eerste regel uit, stopt bij de tweede regel en laat een NameError zien. De derde regel wordt niet uitgevoerd, omdat Python bij de fout is gestopt.

Zoek de onbekende naam en verbeter die. Het voltooide programma moet dit afdrukken:

Errors are useful.
I can read them.
I can fix them.

Verwijder de instructie die problemen geeft niet. Herstel die, voer het programma opnieuw uit en druk daarna op Submit.

Laat Monty de melding uitleggen

Terwijl de foutmelding zichtbaar is, kun je onder de uitvoer op Ask Monty to explain my error drukken. Als je het programma al hebt hersteld, kun je dit later met een andere fout proberen.

Monty kan de melding in begrijpelijke taal uitleggen, die aan je code koppelen en je een kleinere volgende stap geven. Jij lost de fout nog steeds zelf op. Daar leer je van.

Fouten zijn geen omweg bij het programmeren. Ze opsporen en oplossen is programmeren.

Opdracht

Voer het startprogramma uit en lees de foutmelding. Verbeter daarna de fout in het hoofdlettergebruik, zodat de uitvoer precies dit is:

Errors are useful.
I can read them.
I can fix them.

Voer het herstelde programma uit en druk daarna op Submit.