Ich habe keine Angst mehr vor Fehlern! Python-Fehler und ihre Ursachen / Lösungen

Eines der Dinge, auf die Sie beim ** Programmieren ** immer stoßen werden, ist ** Fehler **. Als ich das Programm ausführte, das ich so hart geschrieben habe, bekam ich einen langen Satz auf Englisch, den ich nicht verstand! Ich denke, dass viele Leute frustriert sind, weil dieser Fehler nicht behoben werden kann. In diesem Artikel werde ich Ihnen die Ursachen von Fehlern in ** Python ** und deren Behebung erläutern.

  1. SyntaxError Ich denke, es ist der erste Fehler, auf den die meisten Programmieranfänger stoßen. Lassen Sie uns eins nach dem anderen überprüfen. Dieser Fehler bedeutet wörtlich "** Syntaxfehler **", dh es liegt ein Grammatikfehler vor. Wenn Sie diesen Fehler erhalten, vermuten Sie, dass Sie vergessen haben, die schließende Klammer ")" hinzuzufügen, oder vergessen, den Doppelpunkt ":" in den Raum voller Breite, "if" -Anweisung, "for" -Anweisung und "while" -Anweisung zu schreiben. Von hier aus werde ich mit einigen Beispielen erklären.

1.1. Schließen Sie die Klammern!

** Wenn es keine Klammern gibt ** () oder Sie vergessen, sie zu schließen, SyntaxError: unexpected EOF while parsing Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

hello_world1.py


print("Hello, world!"
# SyntaxError: unexpected EOF while parsing

In diesem Code habe ich vergessen, die Klammern zu schließen, daher erhalte ich die Fehlermeldung "** Es gibt ein unerwartetes Ende des Satzes **". Schließen Sie die Klammern, um den Fehler zu beheben.

Geänderter Code

hello_world2.py


print("Hello, world!")
# Hello, world!

1.2. Finden Sie einen versteckten Raum in voller Breite!

Wenn ** Code in voller Breite ** im Code gemischt ist, SyntaxError: invalid character in identifier Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

circle1.py


r = 2
pi = 3.14
# ^Es ist schwer zu verstehen, aber hier gibt es einen Raum voller Breite(Rote Unterstreichung wird angezeigt)
print(r ** 2 * 3.14)
# SyntaxError: invalid character in identifier

Leerzeichen in voller Breite sind schwer zu finden, aber lassen Sie uns die Anzahl der Zeilen "line (number)", die im Fehler angezeigt werden, als Hinweis finden und korrigieren.

Geänderter Code

circle2.py


r = 2
pi = 3.14
print(r ** 2 * 3.14)
# 12.56

1.3. Fügen Sie einen Doppelpunkt in die if, for, while-Anweisung ein!

Wenn Sie vergessen, ** Doppelpunkt ** : am Ende von Zeilen wie if-Anweisung, for-Anweisung, while-Anweisung, SyntaxError: invalid syntax Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

ten1.py


i = 10
if i == 10
	print("Ich bin 10")
else
	print("Ich bin nicht 10")
# SyntaxError: invalid syntax

Die Lösung besteht darin, am Ende jedes der Sätze "if" und "else" einen Doppelpunkt einzufügen.

Geänderter Code

ten2.py


i = 10
if i == 10:
	print("Ich bin 10")
else:
	print("Ich bin nicht 10")
#Ich bin 10
  1. NameError Dies ist auch ein häufiger Fehler. Der Fehler lautet "** Aufgerufene Variable nicht gefunden **". Stellen Sie sicher, dass Sie die von Ihnen aufgerufenen Variablen definiert und nicht falsch geschrieben haben.

2.1 Überprüfen Sie den Namen der Variablen!

Wenn die aufgerufene Variable undefiniert oder falsch geschrieben ist, ** NameError: name'variable name 'ist nicht definiert ** Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

year1.py


year = 2020
print(Year)

print(month)
# NameError: name 'Year' is not defined

Achten Sie auf die Unterscheidung zwischen Klein- und Großbuchstaben. Da das Programm von oben ausgeführt wird, wird nicht erwähnt, dass die Variable "Monat" nicht definiert ist, dies verursacht jedoch auch einen Fehler.

Geänderter Code

year2.py


year = 2020
print(year)
# 2020
month = 3
print(month)
# 3
  1. TypeError Wie der Name schon sagt, handelt es sich um "** Typfehler **". Dieser Fehler tritt auf, wenn Sie versuchen, zwischen Werten verschiedener Typen zu berechnen oder einen ungeeigneten Typ für das Argument einer Funktion anzugeben. Verwenden Sie zum Konvertieren str () oder int ().

3.1. Lassen Sie uns den Berechnungsteil überprüfen!

Wenn Sie Berechnungen durchführen oder Zeichenfolgen mit "print ()" kombinieren oder Variablen zuweisen, können der Zeichenfolgentyp "str" und der numerische Typ "int" nicht gleichzeitig verwendet werden, und wenn Sie versuchen, sie zu verwenden ** TypeError: Typ 1'Objekt kann nicht implizit in (Typ 2) konvertiert werden ** Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

price1.py


price = 100
print("Dieses Produkt ist" + price + "Es ist ein Kreis.")
# TypeError: Can't convert 'int' object to str implicitly

Dem "Preis" wird der "int" -Typ "100" zugewiesen, daher kann er nicht mit dem "str" -Typ kombiniert werden. Verwenden Sie in diesem Fall die Funktion "str ()", um "price" in den Typ "str" umzuwandeln. Wenn Sie den Typ "str" in der numerischen Berechnung in den Typ "int" konvertieren möchten, verwenden Sie die Funktion "int ()".

Geänderter Code

price2.py


price = 100
print("Dieses Produkt ist" + str(price) + "Es ist ein Kreis.")
#Dieses Produkt ist 100 Yen.

Gleiches gilt für die Argumente anderer Funktionen wie "len ()".

  1. IndentationError Der Fehler ist "** Einzug ist falsch **". Je nach Editor kann der Einzug ** unterschiedlich sein, z. B. 2 oder 4 Leerzeichen mit halber Breite, und dieser Fehler kann aufgrund des Unterschieds auftreten. Eine andere Sache, die passiert, ist, dass das "else" in dem mit der "if" -Anweisung eingerückten Einzug verarbeitet wird.

4.1. Einrückung prüfen!

Wenn der Einzug einen Fehler enthält, IndentationError: unindent does not match any outer indentation level Ich bekomme den Fehler. Es gibt nur eine Problemumgehung für diesen Fehler. "** Überprüfen Sie den Einzug **". Überprüfen Sie, ob die Tabulatortaste und zwei Leerzeichen mit halber Breite gemischt sind.

Code, der einen Fehler ausgibt

nine1.py


number = 99999
if number % 9 == 0:
	print("Zahl ist ein Vielfaches von 9.")
    else:
      print("Zahl ist nicht durch 9 teilbar.")
#   ^^Hier gibt es zwei Räume mit halber Breite.
# IndentationError: unindent does not match any outer indentation level

Stellen Sie sicher, dass Sie einen Einzug haben. Lassen Sie uns auch "else" löschen.

Geänderter Code

nine2.py


number = 99999
if number % 9 == 0:
    print("Zahl ist ein Vielfaches von 9.")
else:
    print("Zahl ist nicht durch 9 teilbar.")
#Zahl ist ein Vielfaches von 9.
  1. IndexError Ich stoße oft darauf, wenn ich mich mit Listen und Strings beschäftige. Der Fehler lautet "** Es wurde eine nicht vorhandene Indexnummer angegeben ". Denken Sie daran, dass " Indexnummern mit" 0 "** beginnen".

5.1 Überprüfen Sie die Indexnummer!

Wenn Sie ein Element von "list" oder "str" angeben, wenn Sie eine Indexnummer angeben, die nicht vorhanden ist ** IndexError: (Typ-) Index außerhalb des Bereichs ** Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

abc1.py


l = ["a","b","c"]
print(l[3])
# IndexError: list index out of range

Die Indexnummer des dritten Elements lautet "2" anstelle von "3". Beachten Sie, dass die Indexnummer des ersten Elements "0" ist. Das Element ganz rechts kann auch mit "-1" angegeben werden.

Geänderter Code

abc2.py


l = ["a","b","c"]
print(l[2])
# c
  1. ImportError Dies ist ein Fehler, der auftritt, wenn versucht wird, ein Modul oder Objekt zu importieren, das beim Importieren einer ** Standardbibliothek ** oder eines ** Pakets ** nicht vorhanden ist. Auf Rechtschreibfehler prüfen.

6.1. Überprüfen Sie den Modulnamen!

Wenn Sie ein Modul aufrufen, das nicht vorhanden ist (oder das durch from import angegebene Objekt), "ImportError: Kein Modul mit dem Namen" Specified Module " Ich bekomme den Fehler.

Code, der einen Fehler ausgibt

math1.py


import maths
print(maths.sqrt(2))
# ImportError: No module named 'maths'

Das Modul "Mathematik" existiert nicht. Schreiben wir es als "Mathe" um.

Geänderter Code

math2.py


import math
print(math.sqrt(2))
# 1.4142135623730951

★ Ergänzung

Als ich den "Fehlercode" in der "Python 3.8.2" -Umgebung ausführte, ModuleNotFoundError: No module named 'maths' Wird als Fehler angezeigt. Der obige Fehler wurde in "Python3.4.3" angezeigt, daher kann er je nach Version unterschiedlich sein, aber ich glaube nicht, dass es ein bestimmtes Problem gibt.

Recommended Posts

Ich habe keine Angst mehr vor Fehlern! Python-Fehler und ihre Ursachen / Lösungen
[Python] Typfehler: Zusammenfassung der Ursachen und Abhilfemaßnahmen für 'Kein Typ'
Der Websocket von toio (nodejs) und python / websocket stellen keine Verbindung her.
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Quellinstallation und Installation von Python
Ich denke daran, Python zu studieren
(Eine der Lösungen) Wenn die Installation von pyenv unter macOS zu BUILD FAILED führt und die Python-Installation fehlschlägt.
Umgebungskonstruktion von Python und OpenCV
Die Geschichte von Python und die Geschichte von NaN
Installation von SciPy und matplotlib (Python)
Dies und das von Python-Eigenschaften
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Zusammenfassung der Python-Indizes und -Slices
Reputation von Python-Büchern und Nachschlagewerken