Proyecto final: resumen de gastos de práctica
Objetivos
Al terminar podrás explicar el concepto principal y adaptar el ejemplo a un caso sencillo.
Concepto
Un proyecto integrador combina conceptos en una herramienta con un objetivo concreto. Descarga el paquete Python desde cero: contiene instrucciones, un CSV sintético, archivos iniciales, una solución y pruebas. No requiere dependencias externas; usa Python 3.11 o posterior. El CSV es ficticio y no está relacionado con Sakila ni con transacciones reales.
Ejemplo
py resumen_gastos.py
py -m unittestLa solución lee gastos.csv junto al programa y muestra cantidad e importe total por categoría. También acepta --archivo ruta/al/archivo.csv. En macOS/Linux, cambia py por python3.
Práctica guiada
Ejecuta el programa y las pruebas; modifica una copia del CSV con una fila válida y luego una inválida.
Reto
Añade detección de fechas repetidas por categoría o una opción de orden por importe y escribe una prueba.
Ver respuesta al reto
Una solución para detectar fechas repetidas por categoría agrega un conjunto antes del ciclo que lee las filas y valida cada par:
claves_vistas = set() # antes del ciclo
# Dentro del ciclo, después de validar fecha y categoría:
clave = (fecha, categoria)
if clave in claves_vistas:
raise ValueError(f"Fila {numero_fila}: fecha y categoría repetidas.")
claves_vistas.add(clave)La prueba escribe dos filas con la misma fecha y categoría y confirma que cargar_y_resumir reporta la segunda fila:
with self.assertRaisesRegex(ValueError, "Fila 3.*repetidas"):
cargar_y_resumir(ruta)La fecha y la categoría forman la clave de detección; el CSV original permanece intacto.
Quiz
Comprobación
Revisa que el ejemplo produzca el resultado esperado y prueba también un caso límite relacionado con la lección.