|
Când înveți Python, poate fi puțin complicat să înțelegi semnificația mesajelor de eroare din Python. Iată o listă cu câteva erori comune de rulare care cauzează blocarea programului tău.
1) Am uitat să adaug :( la finalul if, elif, else, for, while, class, def def. Eroarea va apărea în cod ca acesta: if spam == 42 print("Alo!") 2) Use = în loc de == (rezultând în "SyntaxError: invalid syntax") = este operatorul de alocare, iar == este egal cu operația de comparație.Eroarea apare în astfel de coduri: dacă spam = 42: print("Alo!") 3) Utilizarea incorectă a indentării. (Rezultând în "IndentationError:indentation indent", "IndentationError:undentent nu corespunde niciunui nivel exterior de indentare" și "IndentationError:așteptat un bloc indentat") Amintește-ți că indentarea este folosită doar după afirmațiile care se termină cu: după care formatul de indentare trebuie revenit la formatul anterior de indentare. Eroarea apare în astfel de coduri: print("Alo!") print ("Salut!") Sau: if spam == 42: print("Alo!") print ("Salut!") Sau: if spam == 42: print("Alo!") 4) Uitarea de a chema len() în instrucțiunea buclei for (rezultând în "TypeError: obiectul "list" cannot be interpretat ca un întreg") De obicei vrei să iterezi peste o listă sau un element de șir printr-un index, ceea ce necesită apelarea funcției range(). Amintește-ți să returnezi valoarea len în loc să returnezi această listă. Eroarea apare în astfel de coduri: spam = ["pisică", "câine", "șoarece"] Pentru I în rază (spam): printare (spam) 5) Încearcă să modifici valoarea șirului (rezultând "TypeError: obiectul "str" nu suportă atribuirea itemelor") Șirul este un tip de date imuabil, iar eroarea apare în astfel de coduri: spam = "Am o pisică de companie." spam[13] = "r" printare (spam) Și chiar vrei să faci asta: spam = "Am o pisică de companie." spam = spam[:13] + "r" + spam[14:] printare (spam) 6) Încercarea de a concatena valori non-string cu șiruri (rezultând în "TypeError: Can"t convertit obiectul "int" în str implicit") Eroarea apare în astfel de coduri: numOuă = 12 print("I have " + numEggs + " eggs.") Și chiar vrei să faci asta: numOuă = 12 print("I have " + str(numEggs) + " eggs.") Sau: numOuă = 12 print("Am %s ouă." % (numEggs)) 7) Uitarea de a pune ghilimele la începutul și sfârșitul șirului (rezultând în "SyntaxError: EOL în timpul scanării literală a șirului") Eroarea apare în astfel de coduri:
print(Bună!") Sau: print("Bună!) Sau: Numele meu = "Al" print("Numele meu este " + numele meu + . Ce mai faci?") 8) Greșeală de scriere a numelor variabilelor sau funcțiilor (rezultând în "NameError: numele "fooba" nu este definit") Eroarea apare în astfel de coduri: foobar = "Al" print("Numele meu este " + fooba) Sau: spam = ruond(4.2) Sau: spam = Rundă(4.2) 9) Greșeală de ortografie a numelor metodelor (rezultând în "AttributeError: obiectul "str" nu are atributul "lowerr") Eroarea apare în astfel de coduri: spam = "ESTE SCRIS CU LITERE MICI." spam = spam.lowerr() 10) Referințele depășesc indexul maxim al listei (rezultând în "IndexError: index list out of range") Eroarea apare în astfel de coduri: spam = ["pisică", "câine", "șoarece"] print(spam[6]) 11) Folosirea unei valori cheie din dicționar care nu există (rezultând în "KeyError: 'spam'") Eroarea apare în astfel de coduri: spam = {"cat": "Zophie", "dog": "Basil", "mouse": "Whiskers"} print("Numele zebrei mele de companie este " + spam["zebra"]) 12) Încercarea de a folosi un cuvânt-cheie Python ca nume de variabilă (rezultând "SyntaxError: sintaxă invalidă") Cheia Python nu poate fi folosită ca nume de variabilă, eroarea apare în coduri ca acesta: Clasă = "algebră" Cuvintele cheie Python3 sunt: și, as, assert, break, class, continue, def, del, elif, else, except, False, final, for, from, global, if, import, in, is, lambda, None, nonlocal, not, sau, pass, raise, return, Adevărat, încearcă, în timp ce, cu, cedează
13) Folosirea operatorilor de valoare adăugată într-o variabilă nouă definită (rezultând în "NameError: numele "foobar" nu este definit") Nu folosiți șiruri 0 sau null ca valori inițiale când declarați variabile, astfel încât un spam de propoziție += 1 folosind operatorul auto-incrementant să fie egal cu spam = spam + 1, ceea ce înseamnă că spam trebuie să specifice o valoare inițială validă. Eroarea apare în astfel de coduri: spam = 0 spam += 42 ouă += 42 14) Folosiți variabile locale în funcții înainte de a defini variabilele locale (în acest caz, există o variabilă globală cu același nume ca variabila locală) (rezultând în "UnboundLocalError: variabila locală "foobar" referențiată înainte de atribuire") Este complicat să folosești o variabilă locală într-o funcție cu același nume ca o variabilă globală, iar regulile de utilizare sunt: dacă ceva este definit într-o funcție, dacă este folosit doar în funcție, este local, și invers. Asta înseamnă că nu o poți folosi într-o funcție ca variabilă globală înainte de a o defini. Eroarea apare în astfel de coduri: someVar = 42 def myFunction(): print(someVar) someVar = 100 myFunction() 15) Încercarea de a crea o listă de întregi cu range() (rezultând în "TypeError: obiectul "range" nu suportă atribuirea elementelor") Uneori vrei să obții o listă ordonată de numere întregi, așa că range() pare o metodă bună de a genera această listă. Totuși, trebuie să ții minte că range() returnează un "obiect range", nu valoarea efectivă a listei. Eroarea apare în astfel de coduri: spam = distanță(10) spam[4] = -1 Poate asta vrei să faci: spam = listă(interval(10)) spam[4] = -1 (Notă: spam = range(10) funcționează în Python 2, deoarece în Python 2 range() returnează o valoare de listă, dar în Python 3 se generează eroarea de mai sus) 16) Nice în ++ sau -- operator de auto-incrementare. (Rezultând în "SyntaxError: sintaxă invalidă") Dacă ești obișnuit cu alte limbaje precum C++, Java, PHP etc., poate vrei să încerci să folosești ++ sau -- incrementează și scade o variabilă. Nu există un astfel de operator în Python. Eroarea apare în astfel de coduri: spam = 1 Spam++ Poate asta vrei să faci: spam = 1 spam += 1 17) Am uitat să adaug parametrul self la primul argument al metodei (rezultând în "TypeError: myMethod() nu ia argumente (1 dat)") Eroarea apare în astfel de coduri: clasa Foo(): def myMethod(): print("Alo!") a = Foo() a.metoda mea()
|