Link Search Menu Expand Document
El Libro De Python (24.95 €) 39.95 €

Calcular impuestos

A continuación vemos como calcular los impuestos en un sistema por tramos. En muchos países los impuestos se definen por tramos, donde a cada uno aplica un impuesto diferente. Podemos definir los tramos en Python de la siguiente forma.

TRAMOS = [
    (12000, 0.19),
    (20000, 0.24),
    (30000, 0.30),
    (60000, 0.37),
    (float('inf'), 0.45)]

Esto significa que dependiendo del tramo, se aplicarán unos impuestos diferentes. Por ejemplo:

  • 🐜 Para 10.000 sólo aplica el 19%. Total, 1.900 de impuestos.
  • 🐕 Para 15.000 aplica el 19% sobre 12.000 y el 24% sobre 3.000. Total, 3.000 de impuestos.
  • 🐋 Para 100.000 aplican todos los tramos. 19% sobre 12000, 24% sobre 8000, 30% sobre 10000, 37% sobre 30000 y 45% sobre 40000. Total 36.300 de impuestos.

Ahora definamos una función para calcular el impuesto.

def impuesto(ingreso):
    impuesto = 0

    for i, (hasta, tax) in enumerate(TRAMOS):
        desde = TRAMOS[i - 1][0] if i > 0 else 0
        tramo = min(ingreso, hasta) - desde
        if tramo > 0:
            impuesto += tramo * tax
        if ingreso <= hasta:
            break

    return impuesto

Y la usamos.

total_impuesto = impuesto(ingreso = 100000)
print(f"El impuesto es {total_impuesto:.2f}")
# El impuesto es 36300.00

✏️ Ejercicios:

  • Modifica la función impuesto para que devuelva además del impuesto en Euros a pagar, el porcentaje que este supone del sueldo.