Générer un rapport
Fait partie de la section Logique et flux du Journey Python de Coddy. Leçon 71 sur 78.
Défi
DifficileLe système d’inventaire comporte déjà les éléments suivants :
- Un dictionnaire global
inventoryoù :- 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)
- 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
Ta tâche consiste à implémenter la fonction sales_report(sales) qui :
- Prend un dictionnaire
salesoù :- Les clés sont des noms d’articles
- Les valeurs sont les quantités vendues
- 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
- 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
1Exploration des variables
ConstantesAffectations multiples de variablesÉchange de variablesVariables de remplacementArrondir les nombresConversion en liste4Application de carnet de contacts
Afficher le menuAjouter un contact7Ensembles, partie 2
Opérations mathématiques, partie 1Opérations mathématiques, partie 2Révision - Chasse au trésorSous-ensembles et sur-ensemblesParcourir les ensemblesRévision - Suivi du tournoi10Compréhensions de liste de base
La syntaxeCréer des listes simplesAjouter des conditionsUtiliser l’agrégation de donnéesRécapitulatif - La maison des listesRécapitulatif - Les éléments de la liberté13Système de gestion des stocks
Présentation du projetAjouter un article2Dictionnaires, 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érifier l’appartenanceVérifier l’identitéErreurs d’indentationRécapitulatif – Filtre de vacances8Gestionnaire des dossiers étudiants
Présentation du projetAjouter un étudiant11Fonctions avancées
Retourner plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Défi récapitulatif - Tri avec 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 - Traitement de nombres3Dictionnaires, partie 2
Méthodes des dictionnairesDictionnaires imbriquésVérifier la présence de clésParcourir les dictionnairesRécapitulatif - Compteur de fréquences6Ensembles, partie 1
Qu’est-ce qu’un ensemble ?Opérations de baseMéthodes des ensemblesRécapitulatif - Supprimer les doublons9Agrégation avancée de données
Utiliser la sommeTrouver le minimum et le maximumTrier les données efficacementRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur Python en ligne