Menu
Coddy logo textTech

Générer un rapport

Fait partie de la section Logic & Flow du Journey Python de Coddy — leçon 71 sur 78.

challenge icon

Défi

Difficile

Le système d'inventaire a déjà ces composants implémentés :

  1. Un dictionnaire global inventory où :
    • Les clés sont les noms des articles (chaînes de caractères)
    • Les valeurs sont des dictionnaires contenant :
      • "price" : Le prix de l'article (float)
      • "stock" : La quantité actuelle en stock (entier)
  2. Une fonction add_item(item, price, stock) qui ajoute de nouveaux articles à l'inventaire
  3. Une fonction update_stock(item, quantity) qui met à jour le niveau de stock
  4. Une fonction check_availability(item) qui renvoie le niveau de stock actuel

Votre tâche consiste à implémenter la fonction sales_report(sales) qui :

  1. Prend un dictionnaire sales où :
    • Les clés sont les noms des articles
    • Les valeurs sont les quantités vendues
  2. Pour chaque article dans le dictionnaire des ventes :
    • Vérifie si l'article existe dans l'inventaire
    • Vérifie s'il y a suffisamment de stock
    • Met à jour l'inventaire en réduisant les niveaux de stock
    • Calcule le revenu en fonction du prix et de la quantité vendue
  3. Renvoie une chaîne formatée avec le revenu total

Gérez ces erreurs spécifiques :

  • Si un article n'existe pas dans l'inventaire, affichez : "Error: Item '{item}' not found."
  • S'il n'y a pas assez de stock, affichez : "Error: Insufficient stock for '{item}'."

La sortie doit être une chaîne formatée comme suit : “Total revenue: ${total:.2f}”

 

Ajoutez (remplacez) le bloc de code suivant au bas de votre code :

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)

Essayez vous-même

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"

Toutes les leçons de Logic & Flow