Générer un rapport
Fait partie de la section Logic & Flow du Journey Python de Coddy — leçon 71 sur 78.
Défi
DifficileLe système d'inventaire a déjà ces composants implémentés :
- Un dictionnaire global
inventoryoù :- 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)
- Une fonction
add_item(item, price, stock)qui ajoute de nouveaux articles à l'inventaire - Une fonction
update_stock(item, quantity)qui met à jour le niveau de stock - Une fonction
check_availability(item)qui renvoie le niveau de stock actuel
Votre tâche consiste à implémenter la fonction sales_report(sales) qui :
- Prend un dictionnaire
salesoù :- Les clés sont les noms des articles
- Les valeurs sont les quantités vendues
- 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
- 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
1Exploration des variables
ConstantesAffectations multiplesÉchange de variablesVariables de substitutionArrondir des nombresCasting de listes4Application de carnet de contacts
Afficher le menuAjouter un contact7Ensembles Partie 2
Opérations mathématiques Partie 1Opérations mathématiques Partie 2Récapitulatif - Chasse au trésorSous-ensembles et sur-ensemblesItérer sur les ensemblesRécapitulatif - Suivi de tournoi10Compréhensions de listes basiques
La syntaxeCréer des listes simplesAjouter des conditionsUtiliser l'agrégation de donnéesRécapitulatif - House Of ListsRécapitulatif - Elements Of Freedom13Système de gestion des stocks
Présentation du projetAjouter un article2Les dictionnaires - Partie 1
Qu'est-ce qu'un dictionnaire ?Créer un dictionnaireAccéder aux valeursModifier des dictionnairesRécapitulatif - Gestionnaire de recettes5Prise de décision avancée
Opérateur ternaireVérifications d'appartenanceVérifications d'identitéErreurs d'indentationRécapitulatif - Filtre de vacances8Gestionnaire de dossiers étudiants
Présentation du projetAjouter un étudiant11Fonctions avancées
Retourner plusieurs valeursFonctions Lambda - Partie 1Fonctions Lambda - Partie 2Défi récapitulatif - Tri LambdaFonctions récursives - Partie 1Fonctions récursives - Partie 2Récapitulatif - Somme d'une liste imbriquée14Fonctions d'ordre supérieur
La fonction MapLa fonction FilterRécapitulatif - Validateur d'e-mailsRécapitulatif - Processeur de nombres3Dictionnaires - Partie 2
Méthodes de dictionnaireDictionnaires imbriquésVérification des clésParcourir les dictionnairesRécapitulatif - Compteur de fréquence6Les Ensembles - Partie 1
Qu'est-ce qu'un ensemble ?Opérations de baseMéthodes des ensemblesRécapitulatif - Supprimer les doublons9Agrégation de données avancée
Utilisation de SumTrouver le minimum et le maximumTrier les données efficacementRécapitulatif - Trieur de dictionnaires