Validar filas y calcular importes
Objetivos
Al terminar podrás explicar el concepto principal y adaptar el ejemplo a un caso sencillo.
Concepto
Validar es verificar que el dato cumple las reglas necesarias antes de usarlo. Los valores del CSV son textos; comprueba que fecha y categoría no estén vacías, y que el monto sea un número positivo. Decimal representa importes decimales de forma apropiada: créalo desde el texto, como Decimal("12.50"), para evitar comenzar desde la aproximación de float. Maneja InvalidOperation si el texto no es un decimal.
Ejemplo
from decimal import Decimal
importe = Decimal("12.50")
total = importe + Decimal("2.25")
print(total)Se imprime 14.75. Ambos decimales se construyen desde cadenas.
Práctica guiada
Prueba Decimal("0.10") + Decimal("0.20") y compara con float.
Reto
Rechaza una fila con categoría vacía o monto menor o igual a cero; informa su número de fila.
Ver respuesta al reto
from decimal import Decimal, InvalidOperation
def validar_fila(fila):
categoria = fila["categoria"].strip()
try:
monto = Decimal(fila["monto"])
except InvalidOperation:
return False
return bool(categoria) and monto > 0Al recorrer el CSV, enumera desde la línea 2 y reporta el número de cada fila que devuelve False; no sumes una fila rechazada.
Quiz
Comprobación
Revisa que el ejemplo produzca el resultado esperado y prueba también un caso límite relacionado con la lección.