|
Al aprender Python, puede ser un poco complicado entender el significado de los mensajes de error de Python. Aquí tienes una lista de algunos errores comunes en tiempo de ejecución que hacen que tu programa se bloquee.
1) Se me olvidó añadir :( al final de if, elif, else, for, while, class, def def. El error ocurrirá en código como este: if spam == 42 print("¡Hola!") 2) Usar = en lugar de == (resultando en "SyntaxError: sintaxis inválida") = es el operador de asignación y == es igual a la operación de comparación.El error ocurre en códigos como este: si spam = 42: print("¡Hola!") 3) Uso incorrecto de la hendidura. (Resultando en "IndentationError:indentation inexpected", "IndentationError:undenting no coincide con ningún nivel externo de indentación" y "IndentationError:esperado un bloque indentado") Recuerda que la sangría solo se usa después de las sentencias que terminan en: tras lo cual el formato de sangría debe revertirse al formato anterior de sangría. El error ocurre en códigos como este: print("¡Hola!") imprimir("¡Hola!") O: if spam == 42: print("¡Hola!") imprimir("¡Hola!") O: if spam == 42: print("¡Hola!") 4) Olvidar llamar a len() en la sentencia del bucle for (lo que resulta en "TypeError: el objeto "list" no puede interpretarse como un entero") Normalmente quieres iterar sobre una lista o elemento de cadena a través de un índice, lo que requiere llamar a la función range(). Recuerda devolver el valor de len en vez de devolver esta lista. El error ocurre en códigos como este: spam = ["gato", "perro", "ratón"] Para I en rango (spam): Imprimir (spam) 5) Intentar modificar el valor de la cadena (resultando en "TypeError: el objeto "str" no soporta asignación de ítems") cadena es un tipo de dato inmutable, y el error ocurre en código como este: spam = "Tengo un gato como mascota." spam[13] = "r" Imprimir (spam) Y realmente quieres hacer esto: spam = "Tengo un gato como mascota." spam = spam[:13] + "r" + spam[14:] Imprimir (spam) 6) Intentar concatenar valores no relacionados con cadenas (resultando en "TypeError: Can"t convert "int" object to str implicitly") El error ocurre en códigos como este: numEggs = 12 imprimir("Tengo " + numHuevos + " huevos.") Y realmente quieres hacer esto: numEggs = 12 print("Tengo " + str(numEggs) + " eggs.") O: numEggs = 12 print("Tengo %s huevos." % (numEggs)) 7) Olvidar poner comillas al principio y al final de la cadena (lo que resulta en "SyntaxError: EOL al escanear la literal de la cadena") El error ocurre en códigos como este:
print (¡Hola!") O: imprimir("¡Hola!) O: miNombre = "Al" print ("Mi nombre es " + miNombre + . ¿Cómo estás?") 8) Errores ortográficos de nombres de variables o funciones (resultando en "NameError: name "fooba" no está definido") El error ocurre en códigos como este: foobar = "Al" impreso ("Me llamo " + fooba) O: spam = ruond(4.2) O: spam = Ronda(4.2) 9) Errores ortográficos en los nombres de los métodos (resultando en "ErrorAttribute: "str" object without attribut "lowerr") El error ocurre en códigos como este: spam = "ESTO ESTÁ EN MINÚSCULAS." spam = spam.lowerr() 10) Las referencias superan el índice máximo de lista (resultando en "IndexError: índice de lista fuera de rango") El error ocurre en códigos como este: spam = ["gato", "perro", "ratón"] imprimir(spam[6]) 11) Usar un valor clave de diccionario que no existe (lo que resulta en "KeyError: 'spam'") El error ocurre en códigos como este: spam = {"cat": "Zophie", "dog": "Basil", "raton": "Whiskers"} print ("El nombre de mi cebra mascota es " + spam["zebra"]) 12) Intentar usar la palabra clave Python como nombre de variable (resultando en "SyntaxError: sintaxis invalidada") La clave Python no puede usarse como nombre de variable, el error ocurre en códigos como este: clase = "álgebra" Las palabras clave de Python3 son: and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, o, pass, raise, return, Cierto, intenta, mientras, con, cede
13) Usar operadores de valor añadido en una nueva variable definida (resultando en "NameError: name "foobar" is not defined defined ") No uses 0 ni cadenas nulas como valores iniciales al declarar variables, de modo que un spam de frase += 1 usando el operador auto-incrementante sea igual a spam = spam + 1, lo que significa que spam debe especificar un valor inicial válido. El error ocurre en códigos como este: spam = 0 spam += 42 huevos += 42 14) Utilizar variables locales en funciones antes de definir variables locales (en este caso, existe una variable global con el mismo nombre que la variable local) (resultando en "UnboundLocalError: variable local "foobar" referenciada antes de la asignación") Es complicado usar una variable local en una función con el mismo nombre que una variable global, y las reglas de uso son: si algo está definido en una función, si solo se usa en la función, es local, y viceversa. Esto significa que no puedes usarla en una función como variable global antes de definirla. El error ocurre en códigos como este: someVar = 42 def myFunction(): imprimir(someVar) someVar = 100 miFunción() 15) Intentar crear una lista entera con rango() (resultando en "TypeError: el objeto "range" no soporta asignación de elementos) A veces quieres obtener una lista ordenada de enteros, así que rango() parece una buena forma de generar esta lista. Sin embargo, debes recordar que range() devuelve un "objeto range", no el valor real de la lista. El error ocurre en códigos como este: spam = alcance(10) spam[4] = -1 Quizá esto sea lo que quieres hacer: spam = lista(rango(10)) spam[4] = -1 (Nota: spam = rango(10) funciona en Python 2, porque en Python 2 rango() devuelve un valor de lista, pero en Python 3 se genera el error anterior) 16) Nice en ++ o -- operador de auto-incremento. (Resultando en "SyntaxError: sintaxis inválida") Si estás acostumbrado a otros lenguajes como C++, Java, PHP, etc., quizá quieras probar con ++ o -- incrementar y restar una variable. No existe tal operador en Python. El error ocurre en códigos como este: spam = 1 Spam++ Quizá eso es lo que quieres hacer: spam = 1 spam += 1 17) Se me olvidó añadir el parámetro self al primer argumento del método (resultando en "TypeError: myMethod() no toma argumentos (1 dado)") El error ocurre en códigos como este: clase Foo(): def myMethod(): print("¡Hola!") a = Foo() a.miMétodo()
|