Está en la página 1de 6

Errores en Python

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.

A veces nos encontraremos errores en forma de cascada, y Traceback mostrará desde el


lugar donde se levanta la excepción (que podría ser en alguna librería externa) hasta la
primera línea de tu código que se vió afectado por el error. Por lo general, te encontrarás con
errores de una sola etapa, como la estructura que mostró anteriormente.

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

Traducción: se busca el valor de una variable que no se ha creado anteriormente. Vale


mencionar que a  Python  le importa las mayúsculas y minúsculas de una variable. Por lo
que si defines una variable en minúscula, no la podrás llamar después utilizando
mayúsculas. A esto se le llama que un lenguaje sea Case Sensitive.

Ejemplo 2
resultado = numero + 1

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'numero' is not defined

Traducción: La variable  resultado  iba a obtener el valor de  numero + 1  pero no se


alcanza a calcular, ya que la variable  numero  no se encuentra definida.

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

Traducción: El índice 5 no se encuentra en el rango de índices de la lista. Recordar que los


índices de una lista van desde el 0 hasta uno menos que el largo de la lista.

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

Traducción: un objeto de tipo entero no es iterable, es decir, no se puede recorrer. Vemos


que esto no es problema con listas, textos o tuplas, pero en el caso de los enteros, no hay
una forma definida para que se pueda iterar sobre ellos.

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'

Traducción: No se puede aplicar la operación  +  a un entero con un texto.

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'

También podría gustarte