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.