Del Caos al Control: Domina los Errores en Python

Python para pensadores
Taller diseñado con el corazón de un docente y la mente de un programador
Tema: Python - Control de errores (try-except)

Objetivo de Aprendizaje

Dominar el uso de la estructura try-except en Python para anticipar, manejar y recuperar errores en la ejecución de programas, desarrollando así competencias técnicas en programación defensiva, habilidades cognitivas para el análisis de problemas y actitudes de resiliencia frente a obstáculos, con el propósito de crear software robusto, confiable y consciente de las incertidumbres del entorno digital real.

¿Qué lograrás en este taller?

  • Comprender los tipos de errores más comunes en Python
  • Aplicar la estructura try-except para controlar excepciones
  • Diseñar programas que anticipen y manejen situaciones imprevistas
  • Desarrollar una mentalidad resiliente frente a los errores en programación
  • Crear soluciones más robustas y profesionales

Contextualización

Imagina que estás diseñando una aplicación para una heladería local en tu ciudad. Los clientes ingresan el número de helados que quieren comprar, seleccionan sabores y aplican cupones de descuento. Todo funciona perfectamente... hasta que un cliente escribe "tres" en lugar de "3", o intenta dividir por cero cupones, o selecciona un sabor que ya se agotó.

En la vida real, como en la programación, los imprevistos son inevitables. Los programas, como las personas, se encuentran constantemente con situaciones inesperadas. La diferencia entre un software amateur y uno profesional no está en la ausencia de errores, sino en la elegancia con la que los maneja.

En Python, los errores no son enemigos a eliminar, sino mensajeros que nos informan sobre problemas en nuestra lógica o en los datos que recibimos. Aprender a escuchar estos mensajes y responder adecuadamente es lo que transforma a un estudiante de programación en un verdadero pensador computacional.

Desarrollo de la Actividad

1. Los tipos de errores en Python

En Python, encontramos principalmente dos tipos de errores:

  • Errores de sintaxis: Ocurren cuando Python no puede entender tu código.
  • Excepciones: Ocurren durante la ejecución, cuando Python entiende lo que quieres hacer pero no puede completarlo.

2. La estructura básica try-except

La estructura try-except nos permite "atrapar" errores y decidir cómo responder:

try:
    # Código que podría generar un error
    edad = int(input("Ingresa tu edad: "))
    print("El próximo año tendrás", edad + 1, "años")
except ValueError:
    # Qué hacer si ocurre un ValueError
    print("¡Ups! Debes ingresar un número entero válido.")

3. Múltiples excepciones y el bloque else/finally

Podemos manejar diferentes tipos de errores y añadir bloques que se ejecuten siempre:

def dividir_numeros():
    try:
        num1 = float(input("Ingresa el dividendo: "))
        num2 = float(input("Ingresa el divisor: "))
        resultado = num1 / num2
    except ValueError:
        print("Error: Debes ingresar números válidos")
    except ZeroDivisionError:
        print("Error: No se puede dividir entre cero")
    else:
        print(f"El resultado de la división es: {resultado}")
    finally:
        print("Operación de división finalizada")

# Llamamos a la función
dividir_numeros()

4. Experimentación práctica

Intenta modificar el código anterior para que también maneje el error cuando el usuario presiona Ctrl+C (KeyboardInterrupt) durante la ejecución. Luego, crea una función que calcule el índice de masa corporal (peso/altura²) con manejo completo de errores.

El Reto Final

Desarrolla un programa para una aplicación de delivery de comida en Quito que permita a los usuarios realizar pedidos. El programa debe incluir:

Requisitos del sistema:

  1. Solicitar al usuario que seleccione un plato de un menú predefinido
  2. Pedir la cantidad deseada de ese plato
  3. Aplicar un descuento del 10% si el monto total supera los $20
  4. Calcular el costo total incluyendo IVA (12%)
  5. Manejar todos los errores posibles de forma elegante

Instrucciones detalladas:

1. Crea un diccionario con al menos 5 platos típicos ecuatorianos y sus precios.

2. Implementa un sistema robusto de entrada de datos que maneje errores como:

  • Selección de plato inexistente
  • Cantidad no numérica o negativa
  • Entradas vacías
  • Interrupciones del usuario (Ctrl+C)

3. Tu programa debe permitir al usuario corregir errores sin necesidad de reiniciar la aplicación.

4. Al finalizar, muestra un resumen detallado del pedido con todos los cálculos.

Pistas para el éxito:

• Usa try-except dentro de bucles while para permitir reintentos

• Considera crear funciones específicas para cada tarea (mostrar menú, validar entrada, calcular totales)

• Piensa en el usuario final: tus mensajes de error deben ser claros y constructivos

Evaluación Lúdica

Responde las siguientes preguntas para evaluar tu comprensión sobre el manejo de errores en Python. ¡Cada respuesta correcta te dará puntos!

1. ¿Cuál es la estructura correcta para manejar un error específico en Python?
try: ... except ValueError: ...
catch: ... throw ValueError: ...
try: ... catch ValueError: ...
handle: ... exception ValueError: ...
2. ¿Qué bloque se ejecuta SIEMPRE, ocurra o no una excepción?
else
finally
except
always
3. ¿Cuál de estos NO es un tipo de excepción estándar en Python?
ZeroDivisionError
MathError
TypeError
FileNotFoundError
4. ¿Qué hace la sentencia 'raise' en Python?
Captura una excepción
Lanza o genera una excepción manualmente
Ignora un error
Aumenta el volumen del programa
5. ¿Cuál es la ventaja principal de usar try-except en lugar de solo prevenir errores con condicionales?
Separa claramente el código normal del manejo de errores
Hace que el programa sea más rápido
Elimina la necesidad de pensar en posibles errores
Permite usar menos líneas de código

¡Resultado del test!

0/5