domingo, 5 de mayo de 2024

Uso de varias funciones en Python como ejercicio de Paradigma Funcional.

 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:

  1. Funciones aplicar_descuento y aplicar_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.
  2. 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.
  3. 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.

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 o aplicar_iva a la función calcular_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 y calcular_total_compra se pueden utilizar en otros programas.

No hay comentarios:

Publicar un comentario

7 razones para no usar Laravel en tu proyecto de PHP

En más de 40 años de experiencia como programador y director de proyectos de programación, he aprendido que cada requerimiento tiene mejores...