Controleer de naam van de module die je probeert te importeren. Als het
één van de standaard Python modules is, heb je waarschijnlijk een
spelfout gemaakt. Of je hebt .py
achter de naam gezet – dat moet je
niet doen. Als de fout optreedt bij pcinput
of pcmaze
, dan heb je
ofwel deze modules niet gebouwd of gedownload (zie appendix
311
of
322
om dit op te lossen), of je hebt ze geplaatst op een locatie waar Python
ze niet kan vinden. Zorg dat je ze kopieert naar dezelfde plaats als
waar je je Python programma’s zet.
Je probeert een bestand te openen dat Python niet kan vinden. Wellicht ben je vergeten het volledige pad te vermelden in de bestandsnaam, of je denkt dat het bestand in de huidige directory staat terwijl dat niet zo is. Of misschien probeert je code één van de standaard tekstbestanden te openen die ik gebruik voor het boek, en je hebt die nog niet. Als dat het geval is, zie dan appendix 333 om ze te krijgen.
Als er meerdere syntax errors worden gerapporteerd, moet je proberen de
fout die het eerst gerapporteerd wordt, als eerste op te lossen.
Volgende fouten zijn vaak het gevolg van de eerste. Python rapporteert
bij de fout de regel waarop de fout wordt aangetroffen. Controleer die
regel. Bekijk ook de regel erboven: het is niet ongebruikelijk dat je
een fout hebt gemaakt op een bepaalde regel, maar Python ziet de fout
pas als het met de volgende regel bezig is. Syntax kleuren kunnen ook
een indicatie geven waar je de fout hebt gemaakt. Gebruikelijke syntax
fouten van beginnende programmeurs zijn het vergeten van een dubbele
punt (:
) na een if
, while
, of for
statement, het maken van
spelfouten in variabele namen, en fouten met tabulatie (inspringen).
Je hebt een teken in je programma gebruikt dat niet door Python verwerkt kan worden. Bijvoorbeeld, misschien heb je je eigen naam in de code gezet (misschien zelfs alleen maar in een commentaar-regel), en je naam wordt gespeld met een speciaal teken dat niet op het toetsenbord staat. Beperk je tot de tekens die op een US toetsenbord zitten. Het is niet zo dat je geen speciale tekens mag gebruiken, maar de regels om dat te doen worden in de latere hoofdstukken van het boek uitgelegd.
Zorg ervoor dat je Python 3.4 of een later versie gebruikt. Ik heb de code geschreven met Python 3.4, en heb vernomen dat sommige constructies niet goed werken in eerdere versies van Python.
Misschien staat er een eindeloze loop in je programma, dus het programma
werkt wel, maar komt nooit toe bij het punt dat uitvoer geproduceerd
wordt. Controleer je loops. Soms is het nuttig om een print()
statement op te nemen bij het begin van je programma, zodat je kunt zien
dat het programma daadwerkelijk is opgestart. print()
statements in de
code kunnen je ook helpen om te ontdekken waar het vastloopt.
Zorg dat je de aanroep van de class of functie correct gespeld hebt. Bedenk dat Python onderscheid maakt tussen hoofd- en kleine letters! Als de spelling correct is, wees er dan zeker van dat je niet een variabele hebt gecreëerd met dezelfde naam als de functie (of class). Als je dat hebt gedaan, interfereer je met de mogelijkheden van Python om je functie (of class) te benaderen.
Soms is het goed om te pauzeren. Leg het programma weg, ga naar huis, speel een spelletje, doe fitness, neem een douche, wat je maar wilt. Neem het programma morgen weer op. Vraag het aan een willekeurige programmeur: soms lopen ze vast bij het ontwikkelen van een programma en kunnen een probleem niet oplossen, terwijl de oplossing onmiddellijk duidelijk is als ze de volgende dag op het werk arriveren. Wat kan helpen is om iemand anders bij je computer uit te nodigen en je probleem aan deze andere persoon uit te leggen. Vaak gebeurt het dat je, terwijl je het probleem uitlegt, plotseling ziet waar je een fout hebt gemaakt. Wat je echter zeker niet moet doen, is verder gaan met schrijven aan je programma zonder het probleem op te lossen. Daarmee maak je er alleen maar een grotere chaos van. Een veel beter idee is het programma te kopiëren en dan regels te verwijderen of code te simplificeren totdat je programma weer iets doet dat werkt. Dat geeft je tenminste een idee waar je je fout moet zoeken.