Python de Cero a Experto / Python intermedio
Reto: procesador de datos robusto
Junta todo el módulo en un procesador de datos robusto para Mi Bolsillo: lee gastos desde JSON, VALIDA cada uno lanzando excepciones personalizadas, agrupa los válidos, y guarda un reporte —manejando con elegancia los datos malos sin caerse—. Es exactamente cómo se procesan datos reales: nunca confías en que lleguen perfectos, así que validas y manejas errores en cada paso. El código que no se rompe ante datos imperfectos.
Reto
Procesador robusto
Qué debes construir
Un programa que procese una lista de gastos (algunos con datos inválidos) de forma robusta:
- Excepción personalizada
GastoInvalidoError(Exception). validar_gasto(gasto): revisa que tenganombre(no vacío),valor(número positivo) ycategoriaválida; lanzaGastoInvalidoErrorcon un mensaje claro si algo falla.- Procesar la lista: valida cada gasto en un
try/except; los válidos van a una lista, los inválidos se reportan (sin detener el proceso). - Guardar los gastos válidos en un archivo JSON con
json.dump. - Un reporte con el total de válidos, el conteo de inválidos y el total por categoría.
Parte de estos datos (nota los dos gastos con problemas):
entrada = [
{"nombre": "Mercado", "valor": 87500, "categoria": "comida"},
{"nombre": "Taxi", "valor": -12000, "categoria": "transporte"}, # valor negativo
{"nombre": "Café", "valor": 4200, "categoria": "comida"},
{"nombre": "", "valor": 5000, "categoria": "ocio"}, # nombre vacío
{"nombre": "Cine", "valor": 18000, "categoria": "ocio"},
]Reglas
- Un gasto inválido NO debe detener el proceso: se captura, se reporta, y se sigue con los demás.
- Usa una excepción personalizada y
try/exceptpor cada gasto. - Guarda el resultado con
json.dumpy usawithpara el archivo.
35:00
Cuando estés listo, arranca el reloj.
Qué sigue
Módulo 5 conquistado: dominas el Python intermedio —excepciones, context managers, archivos, JSON/CSV y
CLIs—. Tus programas ahora son robustos e interactúan con el mundo real. El módulo 6 trae el Python
AVANZADO: generadores (yield), decoradores desde cero, typing moderno, pattern matching y asyncio —las
técnicas elegantes que caracterizan al código experto en Python—.