Genera report
Fa parte della sezione Logica e flusso del percorso Python di Coddy. Lezione 71 di 78.
Sfida
DifficileIl sistema di inventario ha già implementati questi componenti:
- Un dizionario globale
inventoryin 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)
- Una funzione
add_item(item, price, stock)che aggiunge nuovi articoli all'inventario - Una funzione
update_stock(item, quantity)che aggiorna il livello delle scorte - Una funzione
check_availability(item)che restituisce il livello attuale delle scorte
Il tuo compito è implementare la funzione sales_report(sales) che:
- Accetta un dizionario
salesin cui:- Le chiavi sono i nomi degli articoli
- I valori sono le quantità vendute
- 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
- 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
1Esplorazione delle variabili
CostantiAssegnazioni multiple di variabiliScambio di variabiliVariabili segnapostoArrotondare i numeriConversione di liste4Applicazione Rubrica
Visualizzare il menuAggiungere un contatto7Insiemi Parte 2
Operazioni matematiche Parte 1Operazioni matematiche Parte 2Riepilogo - Caccia al tesoroSottoinsiemi e sovrainsiemiIterare sugli insiemiRiepilogo - Tracciamento del torneo10Comprensioni di liste di base
La sintassiCreare liste sempliciAggiungere condizioniUsare l'aggregazione dei datiRipasso - La casa delle listeRipasso - Elementi di libertà13Sistema di gestione dell'inventario
Panoramica del progettoAggiungi articolo2Dizionari Parte 1
Che cos'è un dizionario?Creare un dizionarioAccedere ai valoriModificare i dizionariRipasso - Gestore di ricette5Decisioni avanzate
Operatore ternarioVerifiche di appartenenzaVerifiche di identitàErrori di indentazioneRiepilogo - Filtro vacanze8Gestore delle carriere degli studenti
Panoramica del progettoAggiungi studente11Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Sfida di ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di una lista annidata14Funzioni di ordine superiore
La funzione mapLa funzione filterRipasso - Validatore di emailRipasso - Elaboratore di numeri3Dizionari Parte 2
Metodi dei dizionariDizionari annidatiVerificare la presenza di chiaviIterare sui dizionariRipasso - Contatore di frequenza6Insiemi Parte 1
Che cos'è un insieme?Operazioni di baseMetodi degli insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Usare la sommaTrovare il minimo e il massimoOrdinare i dati in modo efficienteRipasso - Ordinatore di dizionari12Gestione di base degli errori
Che cos'è la gestione degli errori?Il blocco try ed exceptGestire più eccezioniRiepilogo - Errori nel carrelloEsercitati da solo: Compilatore Python online