Menu
CoddyTech

Générer un rapport

Fait partie de la section Logique et flux du Journey Python de Coddy. Leçon 71 sur 78.

challenge icon

Défi

Difficile

Le système d’inventaire comporte déjà les éléments suivants :

  1. Un dictionnaire global inventory où :
    • Les clés sont des noms d’articles (chaînes de caractères)
    • Les valeurs sont des dictionnaires contenant :
      • "price" : le prix de l’article (nombre à virgule flottante)
      • "stock" : la quantité actuellement 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

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

  1. Prend un dictionnaire sales où :
    • Les clés sont des noms d’articles
    • Les valeurs sont les quantités vendues
  2. Pour chaque article du 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 chiffre d’affaires en fonction du prix et de la quantité vendue
  3. Renvoie une chaîne formatée contenant le chiffre d’affaires total

Gère ces erreurs spécifiques :

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

La sortie doit être une chaîne au format suivant : “Total revenue: ${total:.2f}”

 

Ajoute (remplace par) le bloc de code suivant à la fin de ton 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 Logique et flux

Entraînez-vous par vous-même : Compilateur Python en ligne