La depuración es una habilidad esencial para cualquier programador. En esta sección, aprenderemos diversas técnicas para identificar y corregir errores en el código. La depuración efectiva no solo ayuda a resolver problemas más rápidamente, sino que también mejora la comprensión del código y previene futuros errores.

  1. Introducción a la Depuración

¿Qué es la Depuración?

La depuración es el proceso de identificar, analizar y corregir errores en el código. Estos errores pueden ser sintácticos, lógicos o de ejecución.

Tipos de Errores

  1. Errores Sintácticos: Errores en la estructura del código, como paréntesis no balanceados o palabras clave mal escritas.
  2. Errores de Ejecución: Errores que ocurren durante la ejecución del programa, como intentar dividir por cero.
  3. Errores Lógicos: Errores en la lógica del programa que producen resultados incorrectos.

  1. Técnicas Básicas de Depuración

2.1. Impresión de Mensajes

La técnica más básica y común es usar declaraciones print() para mostrar valores de variables y mensajes en diferentes puntos del código.

def suma(a, b):
    print(f"Sumando {a} y {b}")
    return a + b

resultado = suma(3, 5)
print(f"Resultado: {resultado}")

2.2. Uso de Assert

Las declaraciones assert permiten verificar que una condición sea verdadera. Si la condición es falsa, el programa lanza una excepción AssertionError.

def dividir(a, b):
    assert b != 0, "El divisor no puede ser cero"
    return a / b

resultado = dividir(10, 2)
print(f"Resultado: {resultado}")

2.3. Comentarios y Desactivación de Código

Comentar partes del código puede ayudar a aislar y localizar errores. También puedes desactivar temporalmente secciones del código para ver si el problema persiste.

def procesar_datos(datos):
    # resultado = datos * 2
    resultado = datos + 2
    return resultado

print(procesar_datos(5))

  1. Herramientas de Depuración

3.1. Uso de pdb (Python Debugger)

pdb es el depurador integrado de Python. Permite ejecutar el código paso a paso, inspeccionar variables y evaluar expresiones.

Iniciar pdb

Para iniciar pdb, inserta import pdb; pdb.set_trace() en el punto donde deseas comenzar la depuración.

def calcular_area(base, altura):
    import pdb; pdb.set_trace()
    area = base * altura
    return area

print(calcular_area(5, 10))

Comandos Básicos de pdb

  • n (next): Ejecuta la siguiente línea de código.
  • c (continue): Continúa la ejecución hasta el siguiente punto de interrupción.
  • q (quit): Sale del depurador.
  • p (print): Imprime el valor de una variable.

3.2. Depuración en IDEs

La mayoría de los Entornos de Desarrollo Integrado (IDEs) como PyCharm, Visual Studio Code y Jupyter Notebooks tienen herramientas de depuración integradas que permiten:

  • Establecer puntos de interrupción.
  • Inspeccionar variables.
  • Ejecutar el código paso a paso.
  • Evaluar expresiones en tiempo real.

  1. Ejercicios Prácticos

Ejercicio 1: Depuración con print()

Corrige el siguiente código usando declaraciones print() para identificar el error.

def multiplicar(a, b):
    resultado = a * b
    return resultado

res = multiplicar(5, '3')
print(f"Resultado: {res}")

Solución:

def multiplicar(a, b):
    print(f"a: {a}, b: {b}")
    resultado = a * b
    return resultado

res = multiplicar(5, 3)  # Cambiar '3' a 3
print(f"Resultado: {res}")

Ejercicio 2: Uso de assert

Añade una declaración assert para verificar que la lista no esté vacía antes de calcular la media.

def calcular_media(lista):
    suma = sum(lista)
    media = suma / len(lista)
    return media

print(calcular_media([1, 2, 3, 4, 5]))

Solución:

def calcular_media(lista):
    assert len(lista) > 0, "La lista no puede estar vacía"
    suma = sum(lista)
    media = suma / len(lista)
    return media

print(calcular_media([1, 2, 3, 4, 5]))

Ejercicio 3: Uso de pdb

Usa pdb para depurar el siguiente código y encontrar el error.

def encontrar_maximo(lista):
    maximo = lista[0]
    for num in lista:
        if num > maximo:
            maximo = num
    return maximo

print(encontrar_maximo([1, 2, 3, 4, 5]))

Solución:

def encontrar_maximo(lista):
    import pdb; pdb.set_trace()
    maximo = lista[0]
    for num in lista:
        if num > maximo:
            maximo = num
    return maximo

print(encontrar_maximo([1, 2, 3, 4, 5]))

  1. Conclusión

La depuración es una habilidad fundamental para cualquier programador. Con las técnicas y herramientas adecuadas, puedes identificar y corregir errores de manera más eficiente. Recuerda que la práctica constante y el uso de herramientas de depuración avanzadas como pdb y los depuradores de IDEs te ayudarán a mejorar tus habilidades de depuración.

En la siguiente sección, aprenderemos a usar pdb de manera más avanzada para depurar programas complejos.

Curso de Programación en Python

Módulo 1: Introducción a Python

Módulo 2: Estructuras de Control

Módulo 3: Funciones y Módulos

Módulo 4: Estructuras de Datos

Módulo 5: Programación Orientada a Objetos

Módulo 6: Manejo de Archivos

Módulo 7: Manejo de Errores y Excepciones

Módulo 8: Temas Avanzados

Módulo 9: Pruebas y Depuración

Módulo 10: Desarrollo Web con Python

Módulo 11: Ciencia de Datos con Python

Módulo 12: Proyecto Final

© Copyright 2024. Todos los derechos reservados