Menu
Coddy logo textTech

Generar reporte

Parte de la sección Logic & Flow del Journey de Python de Coddy — lección 71 de 78.

challenge icon

Desafío

Difícil

El sistema de inventario ya tiene estos componentes implementados:

  1. Un diccionario global inventory donde:
    • Las claves son nombres de artículos (cadenas de texto)
    • Los valores son diccionarios que contienen:
      • "price": El precio del artículo (float)
      • "stock": Cantidad actual en stock (entero)
  2. Una función add_item(item, price, stock) que añade nuevos artículos al inventario
  3. Una función update_stock(item, quantity) que actualiza el nivel de stock
  4. Una función check_availability(item) que devuelve el nivel de stock actual

Tu tarea es implementar la función sales_report(sales) que:

  1. Recibe un diccionario sales donde:
    • Las claves son nombres de artículos
    • Los valores son cantidades vendidas
  2. Para cada artículo en el diccionario de ventas:
    • Verifica si el artículo existe en el inventario
    • Verifica si hay suficiente stock
    • Actualiza el inventario reduciendo los niveles de stock
    • Calcula los ingresos basados en el precio y la cantidad vendida
  3. Devuelve una cadena formateada con los ingresos totales

Maneja estos errores específicos:

  • Si un artículo no existe en el inventario, imprime: "Error: Item '{item}' not found."
  • Si no hay suficiente stock, imprime: "Error: Insufficient stock for '{item}'."

La salida debe ser una cadena formateada como: “Total revenue: ${total:.2f}”

 

Añade (reemplaza) el siguiente bloque de código al final de tu código:

add_item("Apple", 0.5, 50)
add_item("Banana", 0.2, 60)
sales = {"Apple": 30, "Banana": 20, "Orange": 10}  # Orange should print an error
print(sales_report(sales))  # Should output: Total revenue: $19.00
print(inventory)

Pruébalo tú mismo

inventory = {}

def add_item(item, price, stock):
    if item in inventory:
        print(f"Error: Item '{item}' already exists.")
        return
    try:
        inventory[item] = {"price": float(price), "stock": int(stock)}
        print(f"Item '{item}' added successfully.")
    except ValueError:
        print("Error: Price and stock must be numeric.")

def update_stock(item, quantity):
    if item not in inventory:
        print(f"Error: Item '{item}' not found.")
        return
    try:
        new_stock = inventory[item]["stock"] + int(quantity)
        if new_stock < 0:
            print(f"Error: Insufficient stock for '{item}'.")
        else:
            inventory[item]["stock"] = new_stock
            print(f"Stock for '{item}' updated successfully.")
    except ValueError:
        print("Error: Quantity must be an integer.")

def check_availability(item):
    if item not in inventory:
        return "Item not found"
    return inventory[item]["stock"]


add_item("Apple", 0.5, 100)
add_item("Banana", 0.2, 50)
update_stock("Apple", -20)
update_stock("Banana", 30)
print(check_availability("Apple"))  # Should return 80
print(check_availability("Banana"))  # Should return 80
print(check_availability("Orange"))  # Should return "Item not found"

Todas las lecciones de Logic & Flow