Je comprends le problème et son domaine d'application, mais je comprends pas où est le défi, il suffit de faire un simple test comme dans mon message pour répondre à ta question. Disons que je ne saisis pas bien l'intérêt d'enrober une question aussi simple dans une histoire aussi longue. Il s'agit ici juste de regarder si un dico est dans un autre dico ou non, se poser la question de savoir combien de bonne recettes on peut faire aurait été plus intéressant que simplement se poser la question de savoir si une recette est bonne ou pas, comme le sous-entends la fin de ton message.
Au final, je ne suis même pas sur que tu ais posée la question que tu voulais.
Telle qu'elle est posée, la réponse à la question est un simple test comme dit plus haut.
Maintenant j'avais eu la même idée pour un catalogue de cocktails. On indique quels sont les liquides à disposition et le code donne toutes les recettes disponibles. Dans ce cas un test "in" ne suffit pas.
Bon, je m'ennuie aujourd'hui donc voilà un autre code, sur la lignée de l'idée d'@dri1:
import random
INGREDIENTS = [
'poulet', 'vin', 'bouillon en cube', 'quenelle', 'Nutella',
'farine', 'oeuf', 'thym', 'patate', 'café', 'chocolat'
]
RECETTES = {
'du coq au vin': {
'poulet': 1,
'vin': 3,
'bouillon en cube': 1
},
'des quenelles au Nutella': {
'quenelle': 2,
'Nutella': 1
}
}
def isdegueulasse(recette):
return True if recette not in RECETTES.values() else False
def generer_recette():
nb_ing = random.randint(2, 10)
recette = {}
while len(recette) < 2:
recette = {}
for ing in range(nb_ing):
recette[random.choice(INGREDIENTS)] = random.randint(1, 5)
return recette
def recettes_possibles(ingredients):
possibles = list(RECETTES.values())
for recette in RECETTES.values():
for ing, qt in recette.items():
try:
if not ((ing in ingredients.values()) or (qt <= ingredients[ing])):
raise KeyError('ing not in ingredients')
except KeyError:
possibles.remove(recette)
break
return possibles
def obtenir_nom(recette):
try:
return [recette_nom for recette_nom in RECETTES
if RECETTES[recette_nom] == recette][0]
except IndexError:
print("Cette recette n'a pas de nom...")
while True:
recette_martine = generer_recette()
if not isdegueulasse(recette_martine):
print("Miam, ce soir on mange {} !".format(obtenir_nom(recette_martine)))
input()
else:
restes = recettes_possibles(recette_martine)
if restes:
recette = random.choice(restes)
print("Miam, ce soir on mange {} !".format(obtenir_nom(recette)))
else:
print("Ce soir on crève la dalle.")
input(recette_martine)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.