Menu
Coddy logo textTech

Genera report

Fa parte della sezione Logica e flusso del percorso Python di Coddy. Lezione 71 di 78.

challenge icon

Sfida

Difficile

Il sistema di inventario ha già implementati questi componenti:

  1. Un dizionario globale inventory in cui:
    • Le chiavi sono i nomi degli articoli (stringhe)
    • I valori sono dizionari contenenti:
      • "price": il prezzo dell'articolo (float)
      • "stock": la quantità attualmente disponibile in magazzino (intero)
  2. Una funzione add_item(item, price, stock) che aggiunge nuovi articoli all'inventario
  3. Una funzione update_stock(item, quantity) che aggiorna il livello delle scorte
  4. Una funzione check_availability(item) che restituisce il livello attuale delle scorte

Il tuo compito è implementare la funzione sales_report(sales) che:

  1. Accetta un dizionario sales in cui:
    • Le chiavi sono i nomi degli articoli
    • I valori sono le quantità vendute
  2. Per ogni articolo nel dizionario delle vendite:
    • Verifica se l'articolo esiste nell'inventario
    • Verifica se le scorte sono sufficienti
    • Aggiorna l'inventario riducendo i livelli delle scorte
    • Calcola il ricavo in base al prezzo e alla quantità venduta
  3. Restituisce una stringa formattata con il ricavo totale

Gestisci questi errori specifici:

  • Se un articolo non esiste nell'inventario, stampa: "Error: Item '{item}' not found."
  • Se le scorte non sono sufficienti, stampa: "Error: Insufficient stock for '{item}'."

L'output deve essere una stringa formattata così: “Total revenue: ${total:.2f}”

 

Aggiungi (sostituisci) il seguente blocco di codice in fondo al tuo codice:

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)

Provalo tu

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"

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Python online