Errors (Fehlermeldungen) werden dich beim Programmieren mit Python sehr oft begleiten. Diese kommen zu Stande, wenn irgendwas am Code nicht stimmt und werden dir helfen den Fehler zu finden.
Es gibt tausende Fehler, die geschehen können beim Programmieren. Hier besprechen wir zunächst mal die einfachsten und häufig auftretenden Fehlermeldungen, denen man zu Beginn begegnen wird. Ebenfalls schauen wir uns jeweils die Lösung zu diesen Fehlermeldungen an.
Index Errors (IndexError: list index out of range)
Was ist ein Index Error?
Ein Index Error entsteht, wenn man auf einen Index zugreifen möchte, der nicht existiert. Stell dir vor im Inhaltsverzeichnis deines Python-Buchs werden auf Seite 121 Index Error erklärt – es gibt aber keine Seite 121. Genau das ist ein Index Error.
Wie entsteht ein Index Error in Python?
Nehmen wir an, wir hätten eine Liste mit 3 Einträgen.
test_list = [0, 1, 2]
Da in Python die Indizes bei 0 anfangen, also das 1. Element quasi der 0. Eintrag in der Liste ist, greift man auf das 1. Element mit folgendem Befehl zu:
print(test_list[0])
### Output:
>>> 0
Versuchen wir jetzt aber auf den 4. Eintrag (Index 3!) zuzugreifen, stoßen wir auf den IndexError – denn die Liste hat ja nur 3 Einträge und keine 4.
print(test_list[4])
### Output:
IndexError: list index out of range
Wie behebt man Index Errrors?
Wenn wir auf Listen zugreifen, müssen wir darauf achten, dass der Index (also die Zahl in den eckigen Klammern nach dem Variablennamen für die Liste) kleiner ist als die Anzahl der Elemente in der Liste -1. Wir müssen 1 abziehen, da wir ja bei 0 beginnen zu zählen. Somit gehen wir sicher, dass dieser Fehler nicht auftreten kann, da wir nicht auf Einträge zugreifen, die nicht existieren.
Key Errors (KeyError: "x")
Was ist ein Key Error?
Ein Key Error entsteht, wenn man versucht in einem Dictionary nach dem Wert für einen Schlüssel, beziehungsweise Key, sucht, dieser Key aber gar nicht im Dictionary drin steht. Stell dir vor, du suchst im Wörterbuch nach dem Wort „kalsx“ um die genauere Bedeutung herauszufinden. Dieses Wort wirst du jedoch niemals finden, denn es existiert nicht. Das ist ein Key Error.
Wie entsteht ein Key Error?
In Python gibt es Dictionaries, einem Datentyp, in dem man mehrere Elemente in einer Variable abspeichern kann, indem man einem Wert einem sogenannten Schlüssel oder auch Key zuweist.
Über diesen Key kann man dann auf den Wert zugreifen. Ein Beispiel hier:
test_dict = {"key_1": 1, "key_2": 2}
Wir haben hier den Schlüssel beziehungsweise Key „key_1“ mit dem dazugehörigen Wert 1 und den Key „key_2“ mit dem dazugehörigen Wert 2.
Wir können nun mit dem folgenden Befehl auf den Wert von dem Eintrag mit dem Key „key_1“ zugreifen und ausgeben lassen:
print(test_dict["key_1"])
### Output:
>>> 1
Versuchen wir jetzt aber den Wert von dem Eintrag mit einem Key, welcher nicht vorhanden ist („key_3“), zugreifen wollen, kommt es zu einem KeyError, da dieser Key nicht in dem Dictionary existiert.
print(test_dict["key_3"])
### Output:
>>> KeyError: 'key_3'
Wie behebt man Key Errors?
Dieser Fehler kann behoben werden, indem man nur auf Keys zugreift, die auch tatsächlich vorhanden sind in dem Dictionary. Beispielsweise können wir mit dem folgenden Befehl alle Keys ausgeben, die in dem Dictionary vorhanden sind:
print(test_dict.keys())
### Output:
>>> dict_keys(['key_1', 'key_2'])
In der eckigen Klammern stehen alle Keys, die vorhanden sind, also „key_1“ und „key_2“.
Name Errors (NameError: name "x" is not defined)
Was ist ein Name Error?
Wie entsteht ein Name Error?
Diesen Fehler finden wir, wenn wir versuchen eine Variable zu verwenden, die zuvor nicht deklariert, bzw. definiert wurde. Versuchen wir beispielsweise auf eine Variable b zuzugreifen, jedoch vorher b keinen Wert zugewiesen haben, kommt es zu diesem Fehler, da unter der Variable b nichts gefunden wird.
a = "b existiert nicht"
print(b)
### Output:
>>> NameError: name 'b' is not defined
Wie behebt man Name Errors?
Wir müssen die Variable b einfach vorher einen Wert geben und schon ist das Problem gelöst. Wie zum Beispiel hier:
a = "b existiert nicht"
b = "Doch, ich existiere"
print(b)
### Output:
>>> Doch, ich existiere
Zero Division Error (ZeroDivisionError: division by zero)
Wie entsteht ein Zero Division Error
Wie der Name schon sagt, tritt der Fehler auf, sobald man durch 0 teilt. Das funktioniert mathematisch nicht. Mit irgendjemandem muss man seine Kekse teilen. Im Normalfall teile ich sie mit mir selbst (= geteilt durch 1, ganzer Keks für mich).
Teilt man durch Null, müsste man den Keks wegschmeißen und das ist (mathematisch) illegal.
x = 3/0
### Output:
>>> ZeroDivisionError: division by zero
Wie behebt man Zero Division Errors?
Diese Fehlermeldung kann leicht gelöst werden, indem man aufpasst nicht durch 0 zu teilen. Häufig passiert so etwas in Schleifen, wenn ein Wert aus einer Liste plötzlich 0 ausspuckt.
Beispiel: Wir haben eine Liste mit Verkäufen pro Tag und teilen unseren Tagesumsatz durch die Anzahl der Verkäufe.
tagesumsatz = [950, 630, 0, 720]
verkaeufe = [10, 30, 0, 30]
for index in range(len(tagesumsatz)):
umsatz_pro_verkauf = tagesumsatz[index] / verkaeufe[index]
print(umsatz_pro_verkauf)
### Output:
>>> 95.0
>>> 21.0
>>> ZeroDivisionError: division by zero
Wir lassen eine For-Schleife durch die Indizes laufen. Ab dem 3. Durchlauf der Schleife entsteht der Fehler:
- 950 / 10 = 95
- 630 / 30 = 21
- 0 / 0 = undefiniert
- Schleife wird beendet durch die Fehlermeldung. 720 / 30 wird nicht mehr berechnet.