(Desarrolladores estrella de Python para mejorar las habilidades de Python)
Transferencia desde: Open Source China
www.oschina.net/question/89964_62779
Para los principiantes de Python que recién están comenzando, ejecutar el código durante el proceso de aprendizaje encontrará más o menos algunos errores, que pueden parecer más difíciles al principio. A medida que se acumula la cantidad de código, la práctica hace al maestro. Cuando encuentre algunos errores de tiempo de ejecución, podrá localizar rápidamente el problema original. Aquí hay 17 errores comunes que espero puedan ayudarlo.
1 、
Olvídese de agregar al final de las declaraciones if, for, def, elif, else, class:
Causará " SyntaxError: sintaxis no válida " de la siguiente manera:
if spam == 42
print('Hello!')
2 、
Utilice = en lugar de ==. También provocará " SyntaxError: sintaxis no válida ".
= Es un operador de asignación y == es una operación de comparación igual.
El error ocurre en el siguiente código:
if spam = 42:
print('Hello!')
3 、
El uso incorrecto de la sangría, lo que resulta en
" IndentationError :sangría inesperada ”、
" IndentationError :unindent no coincide con ningún nivel de sangría exterior "
Y " IndentationError:esperaba un bloque con sangría "
Recuerde que el aumento de sangría solo se usa después de la oración que termina con :, y luego debe restaurarse al formato de sangría anterior.
El error ocurre en el siguiente código:
print('Hello!')
print('Howdy!')
o:
if spam == 42:
print('Hello!')
print('Howdy!')
4 、
Olvidé llamar a len () en el bucle for
导致 " TypeError: el objeto 'list' no se puede interpretar como un número entero "
Por lo general, desea iterar los elementos de una lista o cadena por índice, lo que requiere llamar a la función range (). Recuerde devolver el valor len en lugar de devolver esta lista.
El error ocurre en el siguiente código:
spam = ['cat', 'dog', 'mouse']
for i in range(spam):
print(spam[i])
5 、
Intenta modificar el valor de la cadena
导致 " TypeError: el objeto 'str' no admite la asignación de elementos "
La cadena es un tipo de datos inmutable. El error se produce en el siguiente código:
spam = 'I have a pet cat.'
spam[13] = 'r'
print(spam)
El enfoque correcto es:
spam = 'I have a pet cat.'
spam = spam[:13] + 'r' + spam[14:]
print(spam)
6 、
Intente concatenar un valor que no sea una cadena con una cadena
导致 " TypeError: no se puede convertir el objeto 'int' en str implícitamente "
El error ocurre en el siguiente código:
numEggs = 12
print('I have ' + numEggs + ' eggs.')
El enfoque correcto es:
numEggs = 12
print('I have ' + str(numEggs) + ' eggs.')
numEggs = 12
print('I have %s eggs.' % (numEggs))
7 、
Olvidé agregar comillas al principio y al final de la cadena
导致 " SyntaxError: EOL mientras se escanea literal de cadena "
El error ocurre en el siguiente código:
print(Hello!')
print('Hello!)
myName = 'Al'
print('My name is ' + myName + . How are you?')
8 、
Nombre de función o variable mal escrito
导致 " NameError: el nombre 'fooba' no está definido "
El error ocurre en el siguiente código:
foobar = 'Al'
print('My name is ' + fooba)
spam = ruond(4.2)
spam = Round(4.2)
9 、
El nombre del método está mal escrito
导致 " AttributeError: el objeto 'str' no tiene el atributo 'lowerr' "
El error ocurre en el siguiente código:
spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()
10 、
La referencia supera el índice máximo de la lista
导致 " IndexError: índice de lista fuera de rango "
El error ocurre en el siguiente código:
spam = ['cat', 'dog', 'mouse']
print(spam[6])
11 、
Utilice claves de diccionario que no existen
Causa " KeyError: 'spam' "
El error ocurre en el siguiente código:
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}
print('The name of my pet zebra is ' + spam['zebra'])
12 、
Intente usar palabras clave de Python como nombres de variables
导致 " SyntaxError: sintaxis no válida "
La clave de Python no se puede utilizar como nombre de variable. El error se produce en el siguiente código:
class = 'algebra'
Python3 的 关键字 有 : y, as, assert, break, class, continue, def, del, elif, else, excepto, False, finalmente, for, from, global, if, import, in, is, lambda, None, no local, no, o, pasar, subir, volver, Verdadero, intentar, mientras, con, ceder
13 、
Utilice operadores de incremento en una nueva definición de variable
导致 " NameError: el nombre 'foobar' no está definido "
No use 0 o una cadena vacía como valor inicial al declarar una variable. De esta manera, una oración de spam + = 1 que usa el operador de incremento es igual a spam = spam + 1, lo que significa que el spam debe especificar un valor inicial válido.
El error ocurre en el siguiente código:
spam = 0
spam += 42
eggs += 42
14 、
Utilice la variable local en la función antes de definir la variable local (hay una variable global con el mismo nombre que la variable local en este momento), lo que da como resultado " UnboundLocalError: variable local 'foobar' referenciada antes de la asignación ".
Es muy complicado usar una variable local en una función y hay una variable global con el mismo nombre al mismo tiempo. La regla de uso es: si algo está definido en la función, si solo se usa en la función, entonces es local, de lo contrario es global variable.
Esto significa que no puede usarlo como una variable global en una función antes de definirlo.
El error ocurre en el siguiente código:
someVar = 42
def myFunction():
print(someVar)
someVar = 100
myFunction()
15,
Intente usar range () para crear una lista de enteros,
导致 “ TypeError: el objeto 'rango' no admite la asignación de elementos ”。
A veces, desea obtener una lista ordenada de números enteros, por lo que range () parece una buena forma de generar esta lista. Sin embargo, debe recordar que range () devuelve un "objeto de rango", no el valor real de la lista.
El error ocurre en el siguiente código:
spam = range(10)
spam[4] = -1
Escritura correcta:
spam = list(range(10))
spam[4] = -1
(Nota: spam = range (10) funciona en Python 2, porque range () devuelve un valor de lista en Python 2, pero el error anterior ocurrirá en Python 3)
dieciséis,
No hay operadores ++ o - de incremento y decremento.
导致 " SyntaxError: sintaxis no válida "
Si está acostumbrado a otros lenguajes como C ++, Java, PHP, etc., puede intentar usar ++ o - incrementar y disminuir una variable. No existe tal operador en Python.
El error ocurre en el siguiente código:
spam = 1
spam++
Escritura correcta:
spam = 1
spam += 1
17 、
Olvidé agregar el parámetro self al primer parámetro del método
导致 " TypeError: myMethod () no acepta argumentos (1 dado) "
El error ocurre en el siguiente código:
class Foo():
def myMethod():
print('Hello!')
a = Foo()
a.myMethod()
(Terminar)
Lectura recomendada
(Haga clic en el título para saltar y leer)
Pequeños secretos de la asignación de memoria de Python
Introducción y uso de la base de datos de gráficos Cayley
¿Crees que este artículo te es útil? Comparte con más personas
Preste atención al "Desarrollador de Python" destacado para mejorar las habilidades de Python
Buen articulo, estoy leyendo ❤️