Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 13564|Risposta: 1

[Comunicazione] 17 errori comuni di runtime Python per principianti

[Copiato link]
Pubblicato su 05/12/2015 13:08:56 | | |

Quando si impara Python, può essere un po' complicato capire il significato dei messaggi di errore di Python. Ecco un elenco di alcuni errori di esecuzione comuni che causano il crash del programma.


1) Dimenticato di aggiungere :( alla fine di if, elif, else, for, while, class, def def.

        L'errore si verifica in codice come questo:

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

2) Usa = invece di == (risultando in "SyntaxError: sintassi invalida")

        = è l'operatore di assegnazione e == è uguale all'operazione di confronto.L'errore si verifica in codice come questo:

se spam = 42:
    print ("Ciao!")

3) Uso errato dell'incavazione. (Risultando in "IndentationError:indennazione inaspettata", "IndentationError:undent non corrisponde a nessun livello di indennazione esterno" e "IndentationError:aspettato un blocco inentrato")

        Ricorda che l'indennazione viene usata solo dopo le affermazioni che terminano con: dopodiché il formato dell'indennazione deve essere ripristinato al precedente formato dell'indaglio. L'errore si verifica in codice come questo:

print ("Ciao!")
    stampa("Ciao!")
O:
if spam == 42:
    print ("Ciao!")
  stampa("Ciao!")
O:
if spam == 42:
print ("Ciao!")

4) Dimenticare di chiamare len() nell'istruzione for loop (con conseguente "TypeError: l'oggetto "list" non può essere interpretato come un intero")

Di solito si vuole iterare su una lista o un elemento di stringa tramite un indice, il che richiede di chiamare la funzione range(). Ricorda di restituire il valore len invece di restituire questa lista.

        L'errore si verifica in codice come questo:

spam = ["gatto", "cane", "topo"]
Per i nel raggio (spam):
    Stampa (spam)

5) Provare a modificare il valore della stringa (risultando in "TypeError: l'oggetto "str" non supporta l'assegnazione degli elementi")

        La stringa è un tipo di dato immutabile, e l'errore si verifica in codice come questo:

spam = "Ho un gatto domestico."
spam[13] = "r"
Stampa (spam)

E vuoi davvero fare questo:

spam = "Ho un gatto domestico."
spam = spam[:13] + "r" + spam[14:]
Stampa (spam)

6) Cercare di concatenare valori non stringa con stringhe (risultando in "TypeError: Can"t converte l'oggetto "int" in str implicitamente")

        L'errore si verifica in codice come questo:

numEgg = 12
print("Ho " + numUova + " uova.")

E vuoi davvero fare questo:

numEgg = 12
print ("Ho " + str(numEggs) + " eggs.")
O:
numEgg = 12
print("Ho %s uova." % (numEggs))

7) Dimenticare di mettere le virgolette all'inizio e alla fine della stringa (risultando in "SyntaxError: EOL mentre si scansiona la letterale della stringa")

        L'errore si verifica in codice come questo:

stampa(Ciao!")
Oppure:
print ("Ciao!)
Oppure:
mioNome = "Al"
print ("Il mio nome è " + mioNome + . Come va?")

8) Errori di ortografia dei nomi di variabili o funzioni (con conseguente "NameError: name "fooba" is not defined ()

        L'errore si verifica in codice come questo:

foobar = "Al"
stampa("Il mio nome è " + fooba)
Oppure:
spam = ruond(4.2)
Oppure:
spam = Round(4.2)

9) Errori di ortografia dei nomi dei metodi (che portano a "ErroreAttributo: "str" oggetto non ha attributo "lowerr")

        L'errore si verifica in codice come questo:

spam = "QUESTO È IN MINUSCOLO."
spam = spam.lowerr()

10) I riferimenti superano l'indice massimo della lista (risultando in "IndexError: indice della lista fuori dalla gamma")

        L'errore si verifica in codice come questo:

spam = ["gatto", "cane", "topo"]
stampa(spam[6])

11) Utilizzare un valore chiave del dizionario che non esiste (con il risultato di "KeyError: 'spam'")

        L'errore si verifica in codice come questo:

spam = {"cat": "Zophie", "dog": "Basil", "mouse": "Whiskers"}
print ("Il nome della mia zebra domestica è " + spam["zebra"])

12) Tentare di usare la parola chiave Python come nome variabile (risultando in "SyntaxError: sintassi invalida")

        La chiave Python non può essere usata come nome di variabile, l'errore si verifica in codice come questo:

classe = "algebra"

Le parole chiave di Python3 sono: and, as, assert, break, class, continue, def, del, elif, else, except, False, final, for, from, global, if, import, in, is, lambda, None, nonlocal, not, oppure, pass, raise, return, Vero, prova, mentre, con, cedi


13) Utilizzare operatori di valore aggiunto in una nuova variabile definita (con il risultato di "NameError: name "foobar" is not defined (ErroreNome):

        Non usare 0 o stringhe nulle come valori iniziali quando si dichiarano variabili, così che uno spam di frase += 1 usando l'operatore auto-incrementante sia uguale a spam = spam + 1, il che significa che spam deve specificare un valore iniziale valido.

        L'errore si verifica in codice come questo:

spam = 0
spam += 42
uova += 42

14) Utilizzare variabili locali nelle funzioni prima di definire variabili locali (in questo caso, esiste una variabile globale con lo stesso nome della variabile locale) (con il risultato di "UnboundLocalError: variable locale "foobar" referenziato prima dell'assegnazione")

        È complicato usare una variabile locale in una funzione con lo stesso nome di una variabile globale, e le regole d'uso sono: se qualcosa è definito in una funzione, se viene usato solo nella funzione, è locale, e viceversa.

        Questo significa che non puoi usarla in una funzione come variabile globale prima di averla definita.

        L'errore si verifica in codice come questo:

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

15) Tentare di creare una lista intera con range() (con risultato in "TypeError: l'oggetto "range" non supporta l'assegnazione degli elementi")

        A volte vuoi ottenere una lista ordinata di interi, quindi range() sembra un buon modo per generare questa lista. Tuttavia, devi ricordare che range() restituisce un "oggetto range", non il valore effettivo della lista.

        L'errore si verifica in codice come questo:

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

Forse è questo che vuoi fare:

spam = lista(range(10))
spam[4] = -1
(Nota: spam = range(10) funziona in Python 2, perché in Python 2 range() restituisce un valore di lista, ma in Python 3 viene generato l'errore sopra)

16) Nice in ++ o -- operatore auto-incremento. (Risultando in "SyntaxError: sintassi invalida")

        Se sei abituato ad altri linguaggi come C++, Java, PHP, ecc., potresti voler provare a usare ++ oppure -- incrementare e sottrarre una variabile. Non esiste un operatore del genere in Python.

        L'errore si verifica in codice come questo:

spam = 1
spam++

Forse è quello che vuoi fare:

spam = 1
spam += 1

17) Dimenticato di aggiungere il parametro self al primo argomento del metodo (risultando in "TypeError: myMethod() takes no arguments (1 given)")

        L'errore si verifica in codice come questo:

classe Foo():
    def myMethod():
        print ("Ciao!")
a = Foo()
a.myMethod()





Precedente:Software per la Cracking WiFi Wireless + Tutorial (Goccia d'Acqua)
Prossimo:【Tutorial della serie di sviluppo iOS rilasciato nell'estate】codice sorgente del progetto iOS
Pubblicato su 05/12/2015 13:34:16 |
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com