Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
En esta guía se espera que aprendas a leer y corregir los distintos errores que te podrían
aparecer mientras programas.
En python existen diversos errores donde cada uno se puede gatillar en distintos contextos.
La estructura básica que tienen es la siguiente:
Traceback (most recent call last):
File "<nombre_archivo>", line <número de línea>, in <módulo>
<Tipo de Error>: <descripción del error>
Traceback nos indica el momento que comienza a revisar el error. La segunda línea
especifica la línea de código donde se detecta el error. Si estás programando en la idle verás
que el nombre de archivo será stdin. La tercera línea contiene las especificaciones del error.
Syntax Error
Cuando hay una línea de código que no respeta la sintaxis predefinida de python, ésta
lanzará un error.
Ejemplo 1
numero = 0
if (numero > 9)
print("Hola")
File "<stdin>", line 2
if (numero > 9)
^
SyntaxError: invalid syntax
Traducción: en la línea 2 existe una sintaxis inválida. En este caso es por un : que hay
que poner después de cada if/elif/else .
Ejemplo 2
Cuando los errores de sintaxis son a causa de la falta de un paréntesis, se producirá en una
línea posterior a la del error en sí. Esto es porque el programa continúa leyendo hasta
encontrar el paréntesis faltante, y cuando ve que hay algo inconsistente, ahi lanza error. En
este caso, indica que hay un error en la línea 4, pero en realidad proviene del paréntesis
faltante en la línea 3.
import random
numero = random.randint(1, 4
print(numero)
File "<stdin>", line 4
print(numero)
^
SyntaxError: invalid syntax
Name Error
Es cuando no se ha asignado algún valor a la variable en cuestión.
Ejemplo 1
numero = 0
print(Numero)
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'Numero' is not defined
Ejemplo 2
resultado = numero + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'numero' is not defined
Index Error
Es cuando tratamos de ver el valor en una posición que no existe de una lista, tupla o string.
Ejemplo 1
lista = [1,2,3]
lista[5]
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: list index out of range
Ejemplo 2
Este ejemplo es uno de los errores más comunes. Al utilizar la condición <= , vemos que en
la última iteración del while , indice alcanza el valor de len(lista) , donde éste es
siempre uno mayor al índice más grande que tiene la lista. Entonces, la posicón
lista[len(lista)] no existe y lanza error.
lista = [1, 2, 3, 4, 5]
indice = 0
while indice <= len(lista):
valor = lista[indice]
print(valor)
indice += 1
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
valor = lista[indice]
IndexError: list index out of range
Value Error
Este error ocurre cuando le otorgamos un valor que no corresponde a una función, pero el
tipo de dato del valor es coherente a lo que se pide.
int("Hola")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
i = int("Hola")
ValueError: invalid literal for int() with base 10: 'Hola'
Traducción: número inválido para convertir a un entero de base decimal. La función recibió
"hola" .
Type Error
Cuando una función recibe un tipo de dato incorrecto o cuando se intenta de hacer algo que
el tipo de dato no soporta.
Ejemplo 1
for n in 123534:
print(n)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
Ejemplo 2
print(2+"2")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Attribute Error
Este error es cuando se intenta acceder a un atributo o función de una librería externa o
clase que no existe.
Ejemplo 1
import random
print(random.number())
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
AttributeError: module 'random' has no attribute 'number'
Traducción: la librería random no tiene una función o atributo que se llame number.
Ejemplo 2
Este ejemplo es en base a las clases. Considera una clase como un tipo de dato
personalizado, que tiene ciertas características (atributos) y funciones. En este caso,
definimos a una clase Persona y dijimos que tenía el atributo nombre . Pero después le
pedimos que nos de el valor de edad de la persona y, por ende, lanza error.
class Persona:
def __init__(self, nombre):
self.nombre = nombre
c = Persona("Florencia")
print(c.edad)
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
print(c.edad)
AttributeError: 'Persona' object has no attribute 'edad'