Heim >Datenbank >MySQL-Tutorial >Analyse von 17 häufigen Fehlern in Python

Analyse von 17 häufigen Fehlern in Python

高洛峰
高洛峰Original
2016-10-19 13:46:481122Durchsuche

Wenn Sie Python zum ersten Mal lernen, kann es etwas kompliziert sein, die Bedeutung von Python-Fehlermeldungen zu verstehen. Hier sind einige häufige Laufzeitfehler, die zum Absturz Ihres Programms führen können.

1) Ich habe vergessen, am Ende der if, elif, else, for, while, class, def-Anweisung Folgendes hinzuzufügen (was zu „SyntaxError: invalid syntax“ führt)

Dieser Fehler wird auftreten in einem Code ähnlich dem folgenden Medium:

if spam == 42

print('Hello!')

2) Verwenden Sie = anstelle von == (was zu „ SyntaxError: invalid syntax")

= ist der Zuweisungsoperator und == ist der Gleichheitsvergleichsoperator. Dieser Fehler tritt im folgenden Code auf:

if spam = 42:

print('Hello!')

3) Falsche Verwendung der Einrückung. (Verursacht „IndentationError: unerwarteter Einzug“, „IndentationError: unindent entspricht keiner äußeren Einrückungsebene“ und „IndentationError: erwarteter eingerückter Block“)

Bedenken Sie, dass Einrückungserhöhungen nur für Anweisungen verwendet werden, die mit Folgendem enden: Danach müssen Sie zum vorherigen Einrückungsformat zurückkehren. Der Fehler tritt im folgenden Code auf:

print('Hello!')

print('Howdy!')


oder :


if spam == 42:

print('Hallo!')

print('Howdy!')


Oder:


wenn Spam == 42:

print('Hallo!')

4) Ich habe vergessen, len() in der for-Schleifenanweisung aufzurufen (was zu „TypeError: ‚list‘-Objekt kann nicht als Ganzzahl interpretiert werden“ führt)

Normalerweise möchten Sie eine Liste iterieren index Oder die Elemente einer Zeichenfolge, für die der Aufruf der Funktion range() erforderlich ist. Denken Sie daran, den len-Wert anstelle der Liste zurückzugeben.

Der Fehler tritt im folgenden Code auf:

spam = ['cat', 'dog', 'mouse']

for i in range(spam):

print(spam[i])

5) Versuchen Sie, den Wert von string zu ändern (was zu „TypeError: ‚str‘-Objekt unterstützt keine Elementzuweisung“ führt)

string ist ein unveränderlicher Datentyp. Dieser Fehler tritt im folgenden Code auf:

spam = 'I have a pet cat.'

spam[13] = 'r'

print(spam)

Und Sie möchten das tatsächlich tun:

spam = 'Ich habe eine Katze als Haustier.'

spam = spam[:13] ' r ' spam[14:]

print(spam)

6) Versuchen Sie, einen Nicht-String-Wert mit einem String zu verketten (was zu „TypeError: ‚int‘-Objekt kann nicht konvertiert werden to str implicitly")

Der Fehler tritt im folgenden Code auf:

numEggs = 12

print('Ich habe ' numEggs ' Eier.')


Und Sie möchten dies tatsächlich tun:

numEggs = 12

print('I have ' str(numEggs) ' egg.')


Oder:


numEggs = 12

print('Ich habe %s Eier.' % (numEggs) )

7) Es wurde vergessen, Anführungszeichen am Anfang und Ende der Zeichenfolge einzufügen (was zu „SyntaxError: EOL beim Scannen des Zeichenfolgenliterals“ führte).

Dieser Fehler tritt in auf folgender Code:


print(Hello!')


oder:


print('Hallo! )


oder:


meinName = 'Al'

print('Mein Name ist ' myName . Wie geht es dir?')

8) Rechtschreibfehler bei Variablen- oder Funktionsnamen (was zu „NameError: Name ‚fooba‘ ist nicht definiert“ führt)

Dieser Fehler tritt im folgenden Code auf:

foobar = 'Al'

print('My name is ' fooba)


oder:


spam = ruond(4.2)


oder:


spam = Round (4.2)

9) Der Methodenname ist falsch geschrieben (was zu „AttributeError: 'str' object has no attribute 'lowerr'' führt)

Dieser Fehler tritt im folgenden Code auf:

spam = 'THIS IS IN LOWERCASE.'

spam = spam.lowerr()

10) Die Referenz überschreitet der maximale Index der Liste (was zu „IndexError: Listenindex außerhalb des Bereichs“ führt)

Der Fehler tritt im folgenden Code auf:

spam = ['cat', 'dog', ' Mouse']

print(spam[6])

11) Verwendung eines Wörterbuchschlüssels, der nicht existiert (was zu „KeyError: 'spam'“ führt)

The Im folgenden Code tritt ein Fehler auf:

spam = {'cat': ' Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}

print('The Der Name meines Haustierzebras ist ' spam['zebra'])

12 ) Versuch, ein Python-Schlüsselwort als Variablennamen zu verwenden (was zu „SyntaxError: invalid syntax“ führt)

Python-Schlüssel kann nicht als Variablenname verwendet werden, der Fehler tritt in Code auf wie:

class = 'algebra '

Die Schlüsselwörter von Python3 sind: and, as, Assert, Break, Class, Continue, def, del, elif, else, außer, False, schließlich, for, from, global, if, import, in , is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield

13) Verwendung des Inkrementoperators in einer neuen Variablendefinition (was zu „NameError: Name ‚foobar‘ ist nicht definiert“ führt)

Verwenden Sie beim Deklarieren einer Variablen nicht 0 oder eine leere Zeichenfolge. Auf diese Weise ist der Satz spam = 1 mit dem Inkrementoperator gleich spam = spam 1, was bedeutet, dass spam einen gültigen Wert angeben muss Anfangswert.

Der Fehler tritt im folgenden Code auf:

spam = 0

spam = 42

eggs = 42

14) in Verwenden Sie lokale Variablen in Funktionen, bevor Sie lokale Variablen definieren (zu diesem Zeitpunkt gibt es eine globale Variable mit demselben Namen wie die lokale Variable) (was zu „UnboundLocalError: lokale Variable ‚foobar‘ vor der Zuweisung referenziert“)

Verwendet wird Lokale Variablen in Funktionen Es ist sehr kompliziert, wenn gleichzeitig eine globale Variable mit demselben Namen vorhanden ist. Die Verwendungsregel lautet: Wenn etwas in einer Funktion definiert ist, ist es nur lokal, wenn es in der Funktion verwendet wird es ist eine globale Variable.

Das bedeutet, dass Sie es nicht als globale Variable in einer Funktion verwenden können, bevor Sie es definiert haben.

Der Fehler tritt im folgenden Code auf:

someVar = 42

def myFunction():

print(someVar)

someVar = 100

myFunction()

15) Versuch, range() zu verwenden, um eine Liste von Ganzzahlen zu erstellen (was zu „TypeError: ‚range‘-Objekt unterstützt keine Elementzuweisung“ führt)

Manchmal möchte man eine geordnete Liste von Ganzzahlen erhalten, daher scheint range() eine gute Möglichkeit zu sein, diese Liste zu generieren. Sie müssen jedoch bedenken, dass range() ein „Range-Objekt“ zurückgibt, nicht den tatsächlichen Listenwert.

Der Fehler tritt im folgenden Code auf:

spam = range(10)

spam[4] = -1

Vielleicht ist das das Richtige für Sie zu tun:

spam = list(range(10))

spam[4] = -1

(Hinweis: in Python 2 spam = range(10) It funktioniert, weil in Python 2 range() einen Listenwert zurückgibt, aber in Python 3 wird der obige Fehler auftreten)

16) Es ist gut, den Inkrement- und Dekrementoperator -- zu verwenden. (Ergibt „SyntaxError: ungültige Syntax“)

Wenn Sie an andere Sprachen wie C, Java, PHP usw. gewöhnt sind, möchten Sie vielleicht versuchen, a mit oder – zu erhöhen und zu dekrementieren Variable. In Python gibt es keinen solchen Operator.

Der Fehler tritt im folgenden Code auf:

spam = 1

spam

Vielleicht möchten Sie Folgendes tun:

spam = 1

spam = 1

17) Ich habe vergessen, den self-Parameter für den ersten Parameter der Methode hinzuzufügen (was zu „TypeError: myMethod() akzeptiert keine Argumente (1 angegeben)“ führt. ")

Dieser Fehler tritt im folgenden Code auf:

class Foo():

def myMethod():

print('Hello!' )

a = Foo()

a.myMethod()


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Python - SequenzNächster Artikel:Python - Sequenz