Correction du Défi Final : Le Marchand
1. Structure initiale :
# Stock du marchand stock = [ {"nom": "Épée courte", "prix": 50, "quantite": 3}, {"nom": "Potion de soin", "prix": 20, "quantite": 10}, {"nom": "Bouclier de bois", "prix": 30, "quantite": 5} ] # État initial du joueur inventaire_joueur = [] or_joueur = 100
2. Fonction afficher_stock() :
def afficher_stock(stock): print("\n=== BOUTIQUE ===") for i, article in enumerate(stock, 1): print(f"{i}. {article['nom']:<20} {article['prix']:>3} pièces " f"({article['quantite']} disponible(s))")
3. Fonction acheter() :
def acheter(stock, inventaire, or_disponible, nom_objet): # Chercher l'article article = None for a in stock: if a["nom"] == nom_objet: article = a break if article is None: return or_disponible, "❌ Cet objet n'est pas en vente." if article["quantite"] <= 0: return or_disponible, "❌ Cet objet est en rupture de stock." if or_disponible < article["prix"]: return or_disponible, f"❌ Pas assez d'or ! Il vous manque {article['prix'] - or_disponible} pièces." # Transaction réussie article["quantite"] -= 1 inventaire.append(nom_objet) nouvel_or = or_disponible - article["prix"] return nouvel_or, f"✅ Achat réussi ! Vous avez acheté '{nom_objet}'."
4. Fonction vendre() :
def vendre(stock, inventaire, or_disponible, nom_objet): # Vérifier si le joueur possède l'objet if nom_objet not in inventaire: return or_disponible, "❌ Vous ne possédez pas cet objet." # Chercher l'article dans le stock article = None for a in stock: if a["nom"] == nom_objet: article = a break # Prix de vente (50% du prix d'achat si l'article existe, sinon prix fixe) if article: prix_vente = article["prix"] // 2 article["quantite"] += 1 else: prix_vente = 10 # Prix pour les objets spéciaux # Transaction inventaire.remove(nom_objet) nouvel_or = or_disponible + prix_vente return nouvel_or, f"✅ Vente réussie ! '{nom_objet}' vendu pour {prix_vente} pièces."
5. Programme principal :
def simulation_marchand(): print("?♂️ BIENVENUE CHEZ LE MARCHAND ?♂️") stock = [ {"nom": "Épée courte", "prix": 50, "quantite": 3}, {"nom": "Potion de soin", "prix": 20, "quantite": 10}, {"nom": "Bouclier de bois", "prix": 30, "quantite": 5} ] inventaire = [] or_joueur = 80 while True: print(f"\n? Votre or : {or_joueur} pièces") print("? Votre inventaire :", inventaire) print("\n1. Voir le stock") print("2. Acheter un objet") print("3. Vendre un objet") print("4. Quitter") choix = input("Votre choix (1-4) : ") if choix == "1": afficher_stock(stock) elif choix == "2": afficher_stock(stock) nom = input("\nNom de l'objet à acheter : ") or_joueur, message = acheter(stock, inventaire, or_joueur, nom) print(message) elif choix == "3": if inventaire: print("\nVous pouvez vendre :", inventaire) nom = input("Nom de l'objet à vendre : ") or_joueur, message = vendre(stock, inventaire, or_joueur, nom) print(message) else: print("❌ Votre inventaire est vide !") elif choix == "4": print("? Au revoir !") break else: print("❌ Choix invalide !") # Pour tester if __name__ == "__main__": simulation_marchand()