Python3 16 erori frecvente ale programatorilor începători când rulează scripturi (erori de rulare)

Am dat peste un articol amuzant despre erorile frecvente în Python pentru programatorii novici. Mi se pare, va fi util pentru cei care s-au mutat dintr-o altă limbă sau doar planifică o tranziție. Apoi vine traducerea.

Găsirea soluțiilor la problemele cu mesajele de eroare emise atunci când rulează programe în Python poate fi dificilă dacă învățați pentru prima dată acest limbaj de programare. Apoi, vor fi descrise cele mai frecvente erori întâlnite când se rulează programe și provoacă o eroare de execuție.

1) O colon este omisă la capătul liniei după structurile de control de tipul dacă. elif. altceva. pentru. în timp ce. clasă. sau def. care va duce la o eroare de tipul SyntaxError: sintaxa invalida

2) Utilizarea = în loc de == duce la o eroare de tip SyntaxError: sintaxă invalidă

Simbolul = este operatorul de atribuire, iar simbolul == este operatorul de comparare.

Această eroare apare în următorul cod:

3) Utilizarea unui număr greșit de liniuțe.

Va exista o eroare de tip IndentationError: indentare neașteptată. IndentationError: unindent nu se potrivește cu niciun nivel de indentare exterioară și IndentationError: se așteaptă un bloc indentat

Trebuie să ne amintim că indentarea trebuie făcută numai după aceea. iar la sfârșitul blocului trebuie să reveniți la numărul anterior de liniuțe.

Se va produce o eroare de tipul TypeError: obiectul "list" nu poate fi interpretat ca un întreg

Deseori există dorința de a trece prin indexurile elementelor dintr-o listă sau dintr-un șir într-o buclă, în timp ce se folosește funcția range (). Este necesar să rețineți că este necesar să primiți valoarea len (someList) în loc de value someList

Eroarea va apărea în următorul cod:

Unii cititori (din articolul original) au observat că este mai bine să folosiți o construcție de tip pentru i în spam. decât codul scris mai sus. Dar, când trebuie să obțineți numărul iterației într-o buclă, folosirea codului de mai sus este mult mai utilă decât obținerea valorii listei.

De la traducător. Uneori, puteți confunda greșit metoda de formă cu len () pentru a determina dimensiunea listei. Acest lucru provoacă o eroare de tip "list" obiect nu are nici un atribut "forma"

5) Încercați să schimbați o parte a liniei. (Eroare de tip Tip de eroare: obiectul "str" ​​nu acceptă asignarea elementului)

Corzile sunt de același tip. Această eroare va apărea în următorul cod:

Se așteaptă următorul rezultat:

De la traducător. Mai multe detalii despre inamovibilitatea liniilor pot fi citite aici.

6) Încercarea de a conecta o variabilă non-string la un șir va duce la o eroare TypeError: Nu se poate converti obiectul 'int' la str implicit

O astfel de eroare va apărea aici:

De la traducător. este încă convenabilă

7) O singură citare este omisă la începutul sau la sfârșitul variabilei șir (SyntaxError: EOL în timp ce scanarea erorii de eroare literală)

Această eroare va apărea în următorul cod:

8) O tipografie în numele unei variabile sau al unei funcții (Tipul de eroare NameError: numele "fooba" nu este definit)

O astfel de eroare poate apărea în acest cod:

De la traducător. foarte des când scrieți, există erori precum NameError: numele "true" nu este definit și NameError: numele "false" nu este definit. legate de faptul că trebuie să scrieți valori booleene cu o majusculă True and False

9) A apărut o eroare la accesarea metodei obiect. (Eroare de tip AttributeError: obiectul 'str' nu are atribut 'lowerr')

Această eroare va apărea în următorul cod:

10) Încercați să folosiți indexul în afara limitelor listei. (Eroare de tip IndexError: indice de listă în afara intervalului)

Eroarea apare în următorul cod:

11) Utilizarea cheilor inexistente pentru dicționar. (Eroare de tip KeyError: spam)

Eroarea va apărea în următorul cod:

12) Utilizarea cuvintelor cheie rezervate în Python ca nume pentru variabila. (Tip de eroare SyntaxError: sintaxă invalidă)

Cuvintele cheie (rezervate) într-un Python nu pot fi folosite ca variabile. Un exemplu în următorul cod:

Python 3 are urmatoarele cuvinte cheie: and. ca. afirma. pauză. clasă. continua. def. del. elif. altceva. cu excepția. Fals. în cele din urmă. pentru. din. la nivel mondial. în cazul în care. de import. în. este. lambda. Nici una. nelocal. nu. sau. treci. ridica. întoarce. Adevărat. încercați. în timp ce. cu. randament

13) Utilizarea operatorilor de atribuire pentru o nouă variabilă neinitializată. (Tip de eroare NameError: numele "foobar" nu este definit)

Nu este necesar să sperăm că variabilele sunt inițializate la început de orice valoare a tipului 0 sau a unei linii goale.

Această eroare apare în următorul cod:

Operatorii de atribuire de tip spam + = 1 sunt echivalenți cu spam = spam + 1. Aceasta înseamnă că variabila spam trebuie să aibă deja o valoare înainte.

14) Utilizarea variabilelor locale care se potrivesc cu numele variabilelor globale într-o funcție înainte de a inițializa variabila locală. (Eroare de tip UnboundLocalError: variabila locala 'foobar' referita inainte de alocare)

Utilizarea unei variabile locale într-o funcție cu un nume care corespunde unei variabile globale este periculoasă. Regula: dacă o variabilă a unei funcții a fost utilizată cu un operator de atribuire, este întotdeauna o variabilă locală pentru această funcție. În caz contrar, este o variabilă globală în interiorul funcției.

Aceasta înseamnă că nu puteți utiliza o variabilă globală (cu același nume ca o variabilă locală) în funcție înainte de ao determina.

Codul cu apariția acestei erori este următorul:

15) Încercați să utilizați intervalul () pentru a crea o listă de numere întregi. (Eroare de tip Tip eroare: obiectul "interval" nu acceptă asignarea elementului)

Uneori vreau să obțin o listă de numere întregi în ordine, astfel că intervalul () pare a fi o funcție potrivită pentru generarea unei astfel de liste. Cu toate acestea, rețineți faptul că intervalul () returnează un obiect din interval. nu o listă de numere întregi.

Un exemplu de eroare în următorul cod:

Apropo, aceasta funcționează în Python 2, deoarece intervalul () returnează o listă. Cu toate acestea, încercarea de a executa codul în Python 3 va duce la eroarea descrisă.

Este necesar să se facă acest lucru:

16) Lipsa operatorilor de incrementare sau decrementare ++. (Tip de eroare SyntaxError: sintaxă invalidă)

Dacă veniți dintr-o altă limbă, cum ar fi C ++, Java sau PHP, puteți încerca să utilizați ++ sau - pentru variabile. În Python, nu există astfel de operatori.

Eroarea apare în următorul cod:

Este necesar să scrieți astfel:

Această eroare apare în următorul cod:

O scurtă explicație a diferitelor mesaje de eroare este prezentată în Anexa D a cărții "Invent with Python".

Materiale utile