Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 13564|Válasz: 1

[Kommunikáció] 17 gyakori Python futási hiba kezdőknek

[Linket másol]
Közzétéve 2015. 12. 05. 13:08:56 | | |

Python tanuláskor kissé bonyolult lehet megérteni a Python hibaüzeneteinek jelentését. Íme néhány gyakori futási idejű hibák listája, amelyek miatt a programod összeomlik.


1) Elfelejtettem hozzáadni :( az if, elif, else, for, while, class, def

        A hiba ilyen kódban fog megjelenni:

if spam == 42
    print ("Hello!")

2) Használd = helyett == (ami "SyntaxError: invalid syntax" eredménye)

        = a kijelölő operátor, és == egyenlő az összehasonlító művelettel.A hiba ilyen kódban fordul elő:

ha spam = 42:
    print ("Hello!")

3) Helytelen behúzás használata. (Ennek eredményeként "IndentationError:unexpected behúzás", "IndentationError:unindent nem egyezik meg semmilyen külső behúzási szinttel", és "IndentationError:expected an indented block")

        Ne feledjük, hogy a behúzást csak olyan mondatok után használják, amelyek a következők végződésével végződnek: utána a behúzás formátumát vissza kell állítani az előző behúzási formátumra. A hiba ilyen kódban fordul elő:

print ("Hello!")
    print ("Szia!")
Vagy:
if spam == 42:
    print ("Hello!")
  print ("Szia!")
Vagy:
if spam == 42:
print ("Hello!")

4) Elfelejtés len() hívni a for hurok-állításban (ami a "TypeError: "list" objektumot nem lehet egész számként értelmezni)

Általában egy lista vagy string elemen keresztül akarsz iterálni egy indexen keresztül, ami a range() függvényt kell hívni. Ne felejtsd el visszaadni a len értéket a lista helyett.

        A hiba ilyen kódban fordul elő:

spam = ["macska", "kutya", "egér"]
Az i hatótávolságban (spam):
    print(spam)

5) Próbáld meg módosítani a string értékét (ami "TypeError: "str" object doesn't support item assignment)

        A string egy változatlan adattípus, és a hiba ilyen kódban fordul elő:

spam = "Van egy háziállat macskám."
spam[13] = "r"
print(spam)

És tényleg ezt akarod megtenni:

spam = "Van egy háziállat macskám."
spam = spam[:13] + "r" + spam[14:]
print(spam)

6) Próbálkozni nem stringértékekkel összekapcsolni (ami a "TypeError: Can't convert't under "int" object to str implicitively

        A hiba ilyen kódban fordul elő:

numEggs = 12
print ("Van " + numEggs + " eggs.")

És tényleg ezt akarod megtenni:

numEggs = 12
print ("Van " + str(numEggs) + " eggs.")
Vagy:
numEggs = 12
print("Van %s tojásom." % (numEggs))

7) Elfelejtés idézőjeleket tenni a sorozat elejére és végére (ami "SyntaxError: EOL while scanting literal string" (SyntaxError: EOL while scanting literal string)

        A hiba ilyen kódban fordul elő:

print (Szia!")
Vagy:
print ("Szia!)
Vagy:
myName = "Al"
print("A nevem " + myName + . Hogy vagy?")

8) Változó- vagy függvénynevek helyesírása (ami "NameError: name "fooba" nem definiált)

        A hiba ilyen kódban fordul elő:

foobar = "Al"
print ("A nevem " + fooba)
Vagy:
spam = ruond(4.2)
Vagy:
spam = Kör (4.2)

9) Metódusnevek helyesírása (ami "AttributeError: "str" objektumnak nincs "lowerr" attribútumja)

        A hiba ilyen kódban fordul elő:

spam = "EZ KISBETŰVEL VAN."
spam = spam.lowerr()

10) A hivatkozások meghaladják a lista maximális indexét (így "IndexError: list index out of range")

        A hiba ilyen kódban fordul elő:

spam = ["macska", "kutya", "egér"]
print(spam[6])

11) Egy szótárkulcs érték használata, amely nem létezik (ami "KeyError: 'spam'" eredményét eredményezi)

        A hiba ilyen kódban fordul elő:

spam = {"macska": "Zophie", "kutya": "Bazsalikum", "egér": "Bajusz"}
print("A háziállat zebrám neve" + spam["zebra"])

12) Python kulcsszó próbálkozása változónévként (ami "SyntaxError: invalid syntax" eredménye)

        A Python kulcs nem használható változónévként, a hiba ilyen kódban jelentkezik:

osztály = "algebra"

Python3 kulcsszavak: és, as, assert, break, class, continue, def, del, elif, else, except, False, final, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, Igaz, próbáld meg, miközben enged


13) Értéknövelő operátorok használata egy definiált új változóban (ami a "NameError: name "foobar" nem definiált)

        Ne használj 0 vagy null stringeket kezdeti értékként változók deklarálásakor úgy, hogy egy mondat spam += 1 önnövelő operátorral egyenlő legyen spam = spam + 1-gyel, ami azt jelenti, hogy a spamnek érvényes kezdeti értéket kell megadnia.

        A hiba ilyen kódban fordul elő:

spam = 0
spam += 42
tojás += 42

14) Helyi változók használata függvényekben a lokális változók meghatározása előtt (ebben az esetben létezik egy globális változó, amelynek ugyanaz a nevű volt, mint a helyi változónak) (így jön létre a "UnboundLocalError: local variable "foobar" hivatkozva a kijelölés előtt)

        Bonyolult egy lokális változót használni egy függvényben, amelynek ugyanaza nevű a globális változó, és a használati szabályok a következők: ha valami definiálva van egy függvényben, ha csak a függvényben használják, akkor lokális, és fordítva.

        Ez azt jelenti, hogy nem használhatod egy függvényben globális változóként a definiálás előtt.

        A hiba ilyen kódban fordul elő:

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

15) Egész számlista létrehozása range() esetén (ami a "TypeError: "range" objektum nem támogatja az item assignment assignment-ot)

        Néha egy rendezett egész számlistát szeretnél szerezni, így a range() jó módnak tűnik ennek a listának generálására. Azonban ne feledd, hogy a range() egy "range objektumot" ad vissza, nem a tényleges lista értéket.

        A hiba ilyen kódban fordul elő:

spam = távolság(10)
spam[4] = -1

Talán ezt szeretnéd csinálni:

spam = lista (range(10))
spam[4] = -1
(Megjegyzés: spam = range(10) működik a Python 2-ben, mert a Python 2-ben a range() listaértéket ad vissza, de a Python 3-ban a fenti hiba keletkezik)

16) Szép ++ vagy -- önnövelő operátor. (Ennek eredményeként "SyntaxError: invalid syntax")

        Ha más nyelvekhez vagy szokva, például C++, Java, PHP stb., érdemes lehet ++ vagy -- increment és levonás módot használni egy változót. A Pythonban nincs ilyen operátor.

        A hiba ilyen kódban fordul elő:

spam = 1
spam++

Talán ezt szeretnéd csinálni:

spam = 1
spam += 1

17) Elfelejtettem hozzáadni az önparamétert a metódus első argumentumához (ami következik: "TypeError: myMethod() nem vesz érvelést (1 megadva)")

        A hiba ilyen kódban fordul elő:

class Foo():
    def myMethod():
        print ("Hello!")
a = Foo()
a.myMethod()





Előző:WiFi vezeték nélküli törőszoftver + oktatóanyag (vízcsepp)
Következő:【iOS Development Series oktatóvideó, nyáron megjelent】IOS projekt forráskód
Közzétéve 2015. 12. 05. 13:34:16 |
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com