Parte 15 — Validar un gasto completo
Reglas del gasto
Un gasto puede requerir:
- Que la cuenta esté activa.
- Que la cuenta no esté bloqueada.
- Que el monto sea mayor que cero.
- Que el gasto no supere el saldo.
Una sola condición combinada
python terminal
cuenta_activa = True
cuenta_bloqueada = False
saldo_actual = 1_000
gasto = 600
if (
cuenta_activa
and not cuenta_bloqueada
and gasto > 0
and gasto <= saldo_actual
):
print("Gasto aprobado.")
else:
print("Gasto rechazado.")Problema de un mensaje genérico
El código anterior solo muestra:
text terminal
Gasto rechazado.Pero no explica por qué.
Podemos utilizar elif para mostrar una causa específica.
Validación detallada
python terminal
cuenta_activa = True
cuenta_bloqueada = False
saldo_actual = 1_000
gasto = 1_500
if not cuenta_activa:
print("La cuenta está inactiva.")
elif cuenta_bloqueada:
print("La cuenta está bloqueada.")
elif gasto <= 0:
print("El gasto debe ser mayor que cero.")
elif gasto > saldo_actual:
print("Saldo insuficiente.")
else:
print("Gasto aprobado.")Resultado:
text terminal
Saldo insuficiente.Orden de las validaciones
El orden comunica cuál problema revisamos primero.
python terminal
if not cuenta_activa:Si la cuenta está inactiva, no tiene sentido seguir revisando el saldo.
Después:
python terminal
elif cuenta_bloqueada:Luego validamos el monto.
Finalmente comprobamos los fondos.
Registrar el gasto
python terminal
saldo_actual = 1_000
total_gastos = 300
gasto = 200
if gasto <= 0:
print("El gasto debe ser mayor que cero.")
elif gasto > saldo_actual:
print("Saldo insuficiente.")
else:
saldo_actual -= gasto
total_gastos += gasto
print("Gasto registrado.")
print(f"Nuevo saldo: {saldo_actual}")Resultado:
text terminal
Gasto registrado.
Nuevo saldo: 800No modificar datos antes de validar
Incorrecto:
python terminal
saldo_actual -= gasto
if gasto > saldo_actual:
print("Saldo insuficiente.")Ya modificamos el saldo antes de comprobar la operación.
Correcto:
python terminal
if gasto > saldo_actual:
print("Saldo insuficiente.")
else:
saldo_actual -= gastoPrimero validamos.
Después modificamos los datos.