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_descuento
yaplicar_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
total
para 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_aplicar
para 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_compra
con 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_descuento
oaplicar_iva
a 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_iva
ycalcular_total_compra
se pueden utilizar en otros programas.
- Las funciones
No hay comentarios:
Publicar un comentario