Hallo,
Ich programmiere/baue im Moment eine Cocktail-Maschine und habe bis jetzt 8 feste Zutaten aus denen eine bestimmte Anzahl an Rezepten möglich ist. Mein Ziel ist es, dass der Benutzer in der Tkinter GUI festlegen kann, welche Zutaten er hat und ihm dann mögliche Rezepte vorgeschlagen werden, die er machen kann. Ich habe dort an eine Liste gedacht aber so einen richtigen Ansatz habe ich leider noch nicht. Ein Teil der Tkinter GUI ist schon fertig. Bitte bedenkt, dass ich noch ein Anfänger bin...
Vielen Dank schonmal im Vorraus
LG Marco
Kombinationen in einer Liste
- __blackjack__
- User
- Beiträge: 13114
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@marcobaumann: Was ist denn die Frage?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 4
- Registriert: Dienstag 30. Juli 2019, 21:21
Die Frage ist, wie ich mit Python die Pumpenbelegung angeben kann und dann die möglichen Rezepte angezeigt werden. Ich hoffe man versteht was ich meine.
LG
LG
-
- User
- Beiträge: 4
- Registriert: Dienstag 30. Juli 2019, 21:21
Mit Pumpenbelegung meine ich das Getränk, was an die Pumpe angeschlossen ist
Wie sieht denn bei dir eine Rezeptdefinition im Code aus? Und wie sieht die Zuordnung der 8 Pumpen zu dem gefoerderten Getraenk aus? Aus letzterem musst du dann nur eine Menge bilden, und aus ersteren all die raussuchen, deren Zutaten eine Teilmenge darstellen.
Code: Alles auswählen
AVAILABLE = { "VODKA", "MARTINI", "RUM", "SCHLUMPFPISSE" }
RECIPES = {
"Vodka Martini" : { "VODKA", "MARTINI" },
...
}
for name, zutaten in RECIPES.items():
if AVAILABLE > zutaten:
print(name)
Es sind also für eine bestimmte Belegung alle Rezepte gesucht, deren Zutaten komplett von der Belegung abgedeckt werden, richtig? Ich würde das mit Mengen (Sets) lösen. Hier mal grob umrissen:
Anstelle der Buchstaben hätte man natürlich die tatsächlichen Zutaten stehen. Hierbei werden erstmal nur die Arten an Zutaten betrachtet. Wenn auch die vorhandene Menge ins Spiel kommen soll, muss hierfür noch eine gesonderte Prüfung eingebaut werden...
Code: Alles auswählen
RECIPES = [
{'A', 'C', 'F'},
{'B', 'D', 'G', 'H'},
{'A', 'I', 'J'},
{'B', 'C'},
{'D', 'E', 'F', 'G'},
{'A', 'B', 'C', 'D'},
{'I', 'J', 'K'}
]
def find_recipes(ingredients):
return [recipe for recipe in RECIPES if recipe <= ingredients]
def main():
print(find_recipes({'A', 'I', 'J', 'K'}))
if __name__ == '__main__':
main()
Hier mal eine Variante, bei der auch die vorhandene Menge betrachtet wird:
Echte Rezepte möge man auch hier selbst einsetzen. Denkbar für die Zahlen wären Angaben in cl.
Code: Alles auswählen
RECIPES = {
'Ham': {'A': 3, 'I': 5, 'J': 2},
'Spam': {'B': 2, 'C': 6},
'Eggs': {'I': 4, 'J': 1, 'K': 3}
}
def match(recipe, setup):
return all(name in setup and setup[name] >= amount
for name, amount in recipe.items())
def find_recipes(setup):
return [name for name, recipe in RECIPES.items()
if match(recipe, setup)]
def main():
print(find_recipes({'A': 25, 'I': 15, 'J': 10, 'K': 30}))
if __name__ == '__main__':
main()
-
- User
- Beiträge: 4
- Registriert: Dienstag 30. Juli 2019, 21:21
Vielen Dank für eure Hilfe. Ein Problem hätte ich jetzt noch. Wie kann ich dies geschickt in eine Tkinter GUI einbetten, sodass statt einer print Meldung der richtige Button zum Mixen erscheint? Außerdem muss man ja noch eine Oberfläche erstellen, sodass der Nutzer der Cocktailmaschine die Zutaten Angeben kann. Gibt es dazu ein geeignetes Tkinter Widget? Trotzdem schonmal vielen Dank, ihr habt mir sehr weitergeholfen...
LG
LG