El ejercicio busca resolver la siguiente solicitud:
Escribir una función que aplique un descuento a un precio y otra que aplique el IVA a un precio. Escribir una tercera función que reciba un diccionario con los precios y porcentajes de una cesta de la compra, y una de las funciones anteriores, y utilice la función pasada para aplicar los descuentos o el IVA a los productos de la cesta y devolver el precio final de la cesta.
El código es:
def aplicar_descuento(precio, porcentaje_descuento):
"""
Función que aplica un descuento a un precio.
Argumentos:
precio: El precio original del producto.
porcentaje_descuento: El porcentaje de descuento que se quiere aplicar.
Devuelve:
El precio final del producto con el descuento aplicado.
"""
descuento = precio * porcentaje_descuento / 100
precio_final = precio - descuento
return precio_final
def aplicar_iva(precio, porcentaje_iva):
"""
Función que aplica el IVA a un precio.
Argumentos:
precio: El precio original del producto.
porcentaje_iva: El porcentaje de IVA que se quiere aplicar.
Devuelve:
El precio final del producto con el IVA aplicado.
"""
iva = precio * porcentaje_iva / 100
precio_final = precio + iva
return precio_final
def calcular_total_compra(cesta_compra, funcion_aplicar):
"""
Función que calcula el total de una compra aplicando una función a cada producto.
Argumentos:
cesta_compra: Un diccionario con los precios y porcentajes de descuento/IVA de cada producto.
funcion_aplicar: La función que se quiere aplicar a cada producto (descuento o IVA).
Devuelve:
El precio total de la compra.
"""
total = 0
for producto, datos in cesta_compra.items():
precio = datos["precio"]
porcentaje = datos["porcentaje"]
precio_final = funcion_aplicar(precio, porcentaje)
total += precio_final
return total
# Ejemplo de uso
cesta_compra = {
"Producto A": {"precio": 100, "porcentaje": 10},
"Producto B": {"precio": 50, "porcentaje": 20},
"Producto C": {"precio": 200, "porcentaje": 5},
}
# Aplicar descuento del 10% a todos los productos
total_con_descuento = calcular_total_compra(cesta_compra, aplicar_descuento)
print(f"Total con descuento: {total_con_descuento}")
# Aplicar IVA del 21% a todos los productos
total_con_iva = calcular_total_compra(cesta_compra, aplicar_iva)
print(f"Total con IVA: {total_con_iva}")
Explicación del código:
-
Funciones
aplicar_descuentoyaplicar_iva:- Estas funciones reciben el precio original del producto y el porcentaje de descuento/IVA como argumentos.
- Calculan el descuento/IVA a aplicar.
- Devuelven el precio final del producto con el descuento/IVA aplicado.
-
Función
calcular_total_compra:- Recibe un diccionario con los precios y porcentajes de descuento/IVA de cada producto, y una función para aplicar (descuento o IVA).
- Inicializa una variable
totalpara almacenar el precio total de la compra. - Recorre cada producto en la cesta de compra:
- Obtiene el precio y el porcentaje del producto actual.
- Aplica la función
funcion_aplicarpara obtener el precio final del producto. - Suma el precio final al total.
- Devuelve el total de la compra.
-
Ejemplo de uso:
- Se crea un diccionario
cesta_compracon los precios y porcentajes de descuento/IVA de cada producto. - Se calcula el total de la compra con descuento del 10% y se imprime.
- Se calcula el total de la compra con IVA del 21% y se imprime.
- Se crea un diccionario
Características del código:
- Sigue los principios de la programación funcional:
- Las funciones son puras, es decir, no modifican el estado externo y siempre devuelven el mismo resultado para los mismos argumentos.
- Se utilizan funciones anónimas para pasar la función
aplicar_descuentooaplicar_ivaa la funcióncalcular_total_compra.
- Es modular:
- Cada función tiene una responsabilidad específica.
- El código es fácil de leer y entender.
- Es reutilizable:
- Las funciones
aplicar_descuento,aplicar_ivaycalcular_total_comprase pueden utilizar en otros programas.
- Las funciones
No hay comentarios:
Publicar un comentario