Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 13564|Antwoord: 1

[Communicatie] 17 veelvoorkomende Python-runtimefouten voor beginners

[Link kopiëren]
Geplaatst op 05-12-2015 13:08:56 | | |

Bij het leren van Python kan het wat ingewikkeld zijn om de betekenis van de foutmeldingen van Python te begrijpen. Hier is een lijst van enkele veelvoorkomende runtime-fouten die ervoor zorgen dat je programma crasht.


1) Vergeten :( toe te voegen aan het einde van if, elif, else, for, while, class, def def def.

        De fout zal optreden in code als deze:

als spam == 42
    print ("Hallo!")

2) Gebruik = in plaats van == (wat resulteert in "SyntaxError: invalid syntax")

        = is de toewijzingsoperator en == is gelijk aan de vergelijkingsoperatie.De fout doet zich voor in code als deze:

Als spam = 42:
    print ("Hallo!")

3) Onjuist gebruik van inkeping. (Dit resulteert in "IndentationError:onverwachte inspringing", "IndentationError:unindent komt niet overeen met een buitenste indetatieniveau", en "IndentationError: verwacht een ingedrukt blok")

        Onthoud dat inspringing alleen wordt gebruikt na statements die eindigen met: waarna het inspringingsformaat moet worden teruggezet naar het vorige inspringingsformaat. De fout doet zich voor in code als deze:

print ("Hallo!")
    print ("Hallo!")
Of:
als spam == 42:
    print ("Hallo!")
  print ("Hallo!")
Of:
als spam == 42:
print ("Hallo!")

4) Vergeten len() aan te roepen in de for lus-instructie (wat resulteert in "TypeError: "list" object kan niet als geheel getal worden geïnterpreteerd")

Meestal wil je itereren over een lijst of stringelement via een index, wat vereist dat je de range()-functie aanroept. Vergeet niet de len-waarde terug te geven in plaats van deze lijst.

        De fout doet zich voor in code als deze:

spam = ["kat", "hond", "muis"]
Voor I in bereik (spam):
    print(spam)

5) Probeer de waarde van de string te wijzigen (wat resulteert in "TypeError: "str" object ondersteunt geen itemtoewijzing)

        string is een onveranderlijk datatype, en de fout treedt op in code als deze:

spam = "Ik heb een kat als huisdier."
spam[13] = "r"
print(spam)

En je wilt dit eigenlijk doen:

spam = "Ik heb een kat als huisdier."
spam = spam[:13] + "r" + spam[14:]
print(spam)

6) Proberen niet-stringwaarden met strings te concateneren (wat resulteert in "TypeError: Can"t can't convert "int" object no str impliciet")

        De fout doet zich voor in code als deze:

numEggs = 12
print("Ik heb " + numEieren + " eieren.")

En je wilt dit eigenlijk doen:

numEggs = 12
print("Ik heb " + str(numEggs) + " eieren.")
Of:
numEggs = 12
print("Ik heb %s eieren." % (numEggs))

7) Vergeten aanhalingstekens aan het begin en einde van de string te zetten (wat resulteert in "SyntaxError: EOL bij het scannen van string literal")

        De fout doet zich voor in code als deze:

print(Hallo!")
Of:
print ("Hallo!)
Of:
myName = "Al"
print("Mijn naam is " + mijnNaam + . Hoe gaat het met je?")

8) Spelfout van variabelen- of functienamen (wat resulteert in "NameError: naam "fooba" is niet gedefinieerd")

        De fout doet zich voor in code als deze:

foobar = "Al"
print ("Mijn naam is " + fooba)
Of:
spam = ruond(4.2)
Of:
spam = Ronde (4.2)

9) Spelfout van methodenamen (wat resulteert in "AttributeError: "str" object heeft geen attribuut "lowerr")

        De fout doet zich voor in code als deze:

spam = "DIT IS IN KLEINE LETTERS."
spam = spam.lowerr()

10) Referenties overschrijden de maximale index van de lijst (wat resulteert in "IndexError: lijst index buiten bereik")

        De fout doet zich voor in code als deze:

spam = ["kat", "hond", "muis"]
print(spam[6])

11) Het gebruik van een woordenboeksleutelwaarde die niet bestaat (wat resulteert in "KeyError: 'spam'")

        De fout doet zich voor in code als deze:

spam = {"cat": "Zophie", "dog": "Basil", "mouse": "Whiskers"}
print("De naam van mijn huisdier zebra is " + spam["zebra"])

12) Proberen het Python-sleutelwoord als variabelennaam te gebruiken (resulterend in "SyntaxError: invalid syntax")

        Python key kan niet als variabelenaam worden gebruikt, de fout komt voor in code als deze:

klasse = "algebra"

Python3-sleutelwoorden zijn: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, of, pass, raise, return, Klopt, probeer, terwijl, met, geef je op


13) Het gebruik van toegevoegde waarde-operatoren in een gedefinieerde nieuwe variabele (wat resulteert in "NameError: naam "foobar" is niet gedefinieerd")

        Gebruik geen 0- of nullstrings als beginwaarden bij het declareren van variabelen, zodat een zinsspam += 1 met de zelf-incrementerende operator gelijk is aan spam = spam + 1, wat betekent dat spam een geldige beginwaarde moet specificeren.

        De fout doet zich voor in code als deze:

spam = 0
spam += 42
eieren += 42

14) Gebruik lokale variabelen in functies voordat lokale variabelen worden gedefinieerd (in dit geval is er een globale variabele met dezelfde naam als de lokale variabele) (wat resulteert in "UnboundLocalError: lokale variabele "foobar" verwezen vóór toewijzing")

        Het is ingewikkeld om een lokale variabele te gebruiken in een functie met dezelfde naam als een globale variabele, en de gebruiksregels zijn: als er iets in een functie is gedefinieerd, als het alleen in de functie wordt gebruikt, is het lokaal, en omgekeerd.

        Dit betekent dat je het niet als globale variabele in een functie kunt gebruiken voordat je het definieert.

        De fout doet zich voor in code als deze:

someVar = 42
def myFunction():
    print(someVar)
    someVar = 100
myFunction()

15) Proberen een gehele getallenlijst te maken met range() (wat resulteert in "TypeError: "range" object ondersteunt geen itemtoewijzing)

        Soms wil je een geordende lijst van gehele getallen krijgen, dus range() lijkt een goede manier om deze lijst te genereren. Je moet echter onthouden dat range() een "range-object" teruggeeft, niet de daadwerkelijke lijstwaarde.

        De fout doet zich voor in code als deze:

spam = bereik(10)
spam[4] = -1

Misschien is dit wat je wilt doen:

spam = lijst(bereik(10))
spam[4] = -1
(Opmerking: spam = range(10) werkt in Python 2, omdat range() in Python 2 een lijstwaarde teruggeeft, maar in Python 3 wordt bovenstaande fout gegenereerd)

16) Mooi in ++ of -- zelf-incrementele operator. (Resulterend in "SyntaxError: ongeldige syntaxis")

        Als je gewend bent aan andere talen zoals C++, Java, PHP, enzovoort, kun je proberen ++ te gebruiken of -- een variabele te verhogen en eraf te trekken. Er bestaat geen dergelijke operator in Python.

        De fout doet zich voor in code als deze:

spam = 1
spam++

Misschien is dat wat je wilt doen:

spam = 1
spam += 1

17) Vergeten de zelfparameter toe te voegen aan het eerste argument van de methode (wat resulteerde in "TypeError: myMethod() neemt geen argumenten (1 gegeven)")

        De fout doet zich voor in code als deze:

klasse Foo():
    def myMethod():
        print ("Hallo!")
a = Foo()
a.myMethod()





Vorig:WiFi Wireless Cracking Software + Tutorial (Waterdruppel)
Volgend:【iOS Development Series Tutorial uitgebracht in de zomer】IOS projectbroncode
Geplaatst op 05-12-2015 13:34:16 |
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com