DÍA 18Archivos y proyecto final · Python desde cero

Comprueba campos y suma importes decimales con Decimal.

Día 18 16 minInicial

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 > 0

Al 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

1. ¿Por qué crear Decimal desde el texto?
2. ¿Qué debe hacer el programa ante un monto inválido?
3. ¿Por qué usar csv.DictReader?

Comprobación

Revisa que el ejemplo produzca el resultado esperado y prueba también un caso límite relacionado con la lección.

TU PROGRESO

Cargando estado…