Zum Hauptinhalt springen
Version: 28Gj

3. Fehler

Sie haben bereits festgestellt, dass Python sehr pingelig ist was Tippfehler und die präzise Verwendung von Klammern, Anführungszeichen, Doppelpunkten und Leerzeichen angeht. Jede Sprache hat seine eigenen Regeln, wie Wörter und Sätze strukturiert sein müssen. Diese Regeln sind allgemein bekannt als die Syntax einer Sprache.

Syntax
Bei Programmiersprachen wird mit der Syntax festgelegt, welche Wörter, in welcher Reihenfolge und in welchem Kontext erlaubt sind.

Syntax Fehler SyntaxError

Syntax Fehler sind kleine Fehler in einem Programm. Da das Programm nicht von einem Menschen, sondern von einem Computer "gelesen" und interpretiert wird, reicht ein Tippfehler, ein fehlendes Komma oder eine fehlende Klammer, dass das Programm vom Computer nicht mehr verstanden werden kann.

Die Python Sprache setzt sich aus folgenden Elementen zusammen:

Schlüsselwörter
oder Statements
Wörter oder Zeichen, die ohne Anführungszeichen und ohne Klammern geschrieben werden.
z.B. import, from oder for, aber auch : oder *.
Sie müssen in einer vordefinierten Reihenfolge vorliegen, damit diese von Python verstanden werden. (👉 ↩ alle Schlüsselwörter)
Befehle
oder Unterprogramme, Funktionen
vordefinierte Befehle, die mit einer runden Klammer aufgerufen werden.
z.B. print('hello')
Variablen
Namen, die einen Wert enthalten
Häufigste Ursachen
  • Fehler bei Schlüsselwörtern
  • vergessene oder falsch eingesetzte Feldtrenner (z.B. :)
  • Falsche Anordnung von Schlüsselwörtern/Feldtrennern

Beispiele

frm turtle import *
forward(100)
from turtle import *
goto(100 50)
from turtle import *
for i in range(4)
forward(25)
right(90)
Fehler finden

Untersuchen Sie obenstehende Programmschnipsel. Was sagen Ihnen die Fehlermeldungen?

  • Auf welcher Zeile steht die Art des Fehlers?
  • Wo finden Sie Hinweise auf den Fehler? Flicken Sie sie...
frm turtle import *
forward(100)
from turtle import *
goto(100 50)
Hinweis

Was macht der Befehl goto? Schauen Sie die Funktionsweise unter 👉 Turtle Befehle#goto(x, y) nach

from turtle import *
for i in range(4)
forward(25)
right(90)
Laden...

Namens Fehler NameError

Liegt ein Fehler vor, der nicht bei Schlüsselwörtern (oder deren Anordnung) vorliegt, so handelt es sich oft um einen Namens-Fehler (NameError). Es wird also versucht, ein Unterprogramm zu öffnen (oder eine Variable abzufragen), das aber unter diesem Namen nicht gefunden werden kann.

Häufigste Ursachen

Die häufigste Ursachen von NameErrors sind

  • Vertipper im Namen des Befehls
  • nicht importierte Befehle (z.B. from turtle import * fehlt)

Beispiele

from turtle import *
forwrd(100)

Der angegebene Befehl forwrd kann nicht gefunden werden, da er weder in einer importierten Bibliothek, noch im aktuellen Programm gefunden werden kann.

Der gleiche Fehler tritt auf, wenn der Befehl zwar richtig geschrieben wird, das Importieren aber vergessen geht:

forward(100)
Fehler finden

Finden und lösen Sie die entstandenen Fehler. Flicken Sie alle Fehler, indem Sie die Fehlermeldungen analysieren.

warnung

Die verwendeten Befehle haben wir bisher nicht angeschaut. Dennoch können die Fehler durch die Fehlermeldungen gefunden und behoben werden.

from math import *

print('15.3 gerundet =', rond(15.3))
print('15.8 gerundet =', round(15.8))
print('15.3 aufgerundet =', ceyl(15.3))
print('15.8 abgerundet =', flor(15.8))

Nachdem das Programm nun geflickt ist... was machen die Befehle?

Laden...

Einrückungsfehler IndentationError

Python erwartet nach jedem Doppelpunkt :, dass ein eingerückter Codeblock kommt. Falls kein eingerückter Codeblock gefunden wird, entsteht ein IndentationError. Wird jedoch fälschlicherweise eine Zeile eingerückt, so wird ebenfalls dieser Fehler angezeigt.

Häufigste Ursachen
  • Die nächste Zeile nach einem Doppelunkt : ist nicht eingerückt
  • Eine Zeile ist fälschlicherweise eingerückt
  • ein Leerschlag zu wenig eingerückt
Einrücken mit der Tabulator-Taste

Am einfachsten kann Code mit der Tabulator-Taste eingerückt werden. Es kann auch ein Code-Block markiert und mit eingerückt werden.

Beispiel

Nicht eingerückt
for i in range(5):
print('Hallo')
Korrektur
for i in range(5):
print('Hallo')
Falsch eingerückt
print('Hallo')
print('wie')
print('gehts?')
Korrektur
print('Hallo')
print('wie')
print('gehts?')
Fehler finden

Finden und lösen Sie die entstandenen Fehler, so dass die Ausgabe

Hallo zum 0
Hallo zum 1
Ende

lautet.

for i in range(2):
print('Hallo zum', i)
print('Ende')
Laden...

Logikfehler

Aus der Sicht von Python funktioniert alles und das Programm kann ausgeführt werden 👍🥳.

Sobald aber das Programm ausgeführt wird, macht es nicht das, was Sie sich gewünscht haben - dann spricht man von Logik-Fehlern 💩...

Diese Fehler sind im allgemeinen am schwierigsten zu finden. Ein häufiger Fehler ist aber, dass man bei einem Befehl die runden Klammern am Ende vergisst - für Python kein Problem, da es den Befehl kennt, jedoch nicht dazu aufgefordert wird, diesen auszuführen.

Häufigste Ursachen

Checkliste für Logikfehler

  • sind bei Befehlen die runden Klammern () am Ende angegeben?
  • bis zu welchem Punkt funktioniert das Programm? (Fehler eingrenzen)
  • ...

Beispiel

from turtle import *
penup()
goto(-10, 10)
pendown
for i in range(4):
forward(20)
left(90)

Auf Zeile 4 fehlen die runden Klammern - pendown wird nicht ausgeführt! Fehler beheben: Den Befehl mit pendown() aufrufen.


Fehler finden

Finden und beheben Sie alle Fehler, so dass folgende Ausgabe entsteht:

from turtle import *

fillcolor("Rot")
penup()
goto(-125 125)
begin_fill()
for i in range(4)
forward(250)
left(90)
end_fill()
forward(150)
links(90)
forward(50)
fillcolor("white")
begin_fill()
for i in range(4):
forward(50)
right(90)
forward(50)
left(90)
forward(50)
left(90)
end_fill
Laden...