17 errores comunes en tiempo de ejecución de Python

(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

640? Wx_fmt = png

Buen articulo, estoy leyendo ❤️

Supongo que te gusta

Origin blog.csdn.net/iodjSVf8U1J7KYc/article/details/100613021
Recomendado
Clasificación