Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Python intermedio para IA, Unidad 9 — Testing y depuración, 9.1 — Depuración sistemática ·

Leer errores correctamente

Leer errores correctamente

Introducción

En la programación, especialmente cuando se trabaja con inteligencia artificial y ciencia de datos, los errores pueden surgir por una serie de factores. Desde problemas de sintaxis hasta fallas en algoritmos complejos, los errores son inevitables. Sin embargo, no todos los errores son creados iguales; algunos indican problemas fáciles de resolver, mientras que otros revelan profundas fallas en la lógica o el diseño del programa. Por lo tanto, aprender a leer y comprender estos errores es una habilidad valiosa para cualquier programador.

En esta unidad, exploraremos cómo interpretar y manejar los errores correctamente. Veremos cómo diagnosticar y corregir problemas utilizando técnicas efectivas de depuración, asegurándonos de que nuestro código esté libre de fallos y funcione eficientemente.

Explicación principal

Comprendiendo el flujo del error

Cuando se produce un error en Python, la consola muestra una traza de pila (stack trace) que incluye información sobre dónde exactamente ocurrió el error. Este es un ejemplo típico de una traza de error:

Traceback (most recent call last):
  File "main.py", line 15, in <module>
    result = a / b
ZeroDivisionError: division by zero

En este caso, la traza indica que el error ZeroDivisionError ocurrió en la línea 15 de main.py. Esto nos da un punto de partida para investigar qué está causando el error.

Analizando los mensajes de error

Python proporciona mensajes detallados que ayudan a identificar el problema. Es importante entender estos mensajes y buscar soluciones adecuadas basándose en ellos. Por ejemplo, si se recibe un mensaje como "list index out of range", esto significa que intentamos acceder a una posición de la lista que no existe.

Ejemplo práctico

Vamos a considerar el siguiente bloque de código:

def dividir(a, b):
    if b == 0:
        raise ValueError("No se puede dividir por cero")
    return a / b

num1 = 8
num2 = input("Ingresa un número: ")
result = dividir(num1, num2)
print(f"El resultado es {result}")

Este código intenta realizar una división y maneja el caso en que se divide por cero. Sin embargo, si no se proporciona un número válido como entrada, el programa generará un error de tipo ValueError. Aprender a leer estos errores nos permite corregir las entradas incorrectas.

Errores típicos / trampas

1. Tipos incompatibles

Un común es intentar operar con tipos que no son compatibles, como sumar una cadena y un número entero:

a = "5"
b = 2
result = a + b  # Esto generará un error de tipo TypeError

2. Acceso a objetos inexistentes

A veces, se intenta acceder a un atributo o método que no existe en un objeto:

class MiClase:
    pass

mi_objeto = MiClase()
print(mi_objeto.no_existe)  # Esto generará un error de tipo AttributeError

3. Manejo incorrecto de excepciones

Un error común es manejar excepciones de manera inadecuada, lo que puede ocultar problemas más graves:

try:
    resultado = 10 / 0
except ZeroDivisionError as e:
    print("Ocurrió un error", e)

En este ejemplo, no se está mostrando el mensaje de error completo y no se proporciona una solución adecuada.

Checklist accionable

  • Revisar la traza de pila: Identifica exactamente dónde se produjo el error.
  • Analizar el mensaje de error: Comprende el significado del mensaje para identificar el problema.
  • Verificar tipos y valores: Asegúrate de que los datos sean correctos y compatibles.
  • Usar assert para debug mental: Introduce cláusulas assert en tu código para verificar suposiciones.
  • Manejar excepciones adecuadamente: Proporciona una respuesta clara a cada posible error.

Cierre

Ahora que hemos explorado la importancia de leer errores correctamente, es importante recordar que aprender a depurar es un proceso continuo. Cada error resuelto no solo corrige el problema actual, sino que también nos ayuda a mejorar nuestra comprensión del código y nuestras habilidades de programación.

Siguientes pasos

  • Práctica constante: Continúa probando tu código con diferentes entradas para asegurarte de que funcione correctamente.
  • Leer documentación: Familiarízate con la documentación oficial de Python para entender mejor los tipos y excepciones.
  • Aprender herramientas adicionales: Utiliza depuradores como pdb para analizar el flujo del programa en tiempo real.

Siguiendo estos pasos, podrás convertirte en un depurador experto y asegurar que tu código de inteligencia artificial sea robusto y eficiente.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).