Python Rezept programmieren?
Hallo Leute,
kann mir jemand bei dem folgenden Fehler helfen?
ich möchte nicht, dass bei der Kommandozeile am Ende ,,Gebe einen gültigen Wert ein!‘‘ steht, da ich ja keinen ungültigen Wert eingegeben habe…
Da ist ja auch eigentlich nur für die Else Option vorgesehen…
vielen Dank im Voraus
2 Antworten
Was Du eigentlich machen willst:
match auswahl:
case '1':
....
case '2':
....
case '3':
....
Je nach Bedarf kannste natürlich auch casten. Übrigens sidn Deine Rezeptlisten einelementig bestehend aus einem String.
Wie Du das eigentlich sinnvollerweise machen würdest:
recipes=("2 Eier, 600g Mehl, 200g Milch", "....", ...)
recipe=int(input(...))
if recipe <= len(recipes):
print recipes[recipe-1]
Da kannste Dir die Matchingtirade gleich ersparen - noch bequemer wäre es nen dictionary zu nutzen. Das hier ist nur exemplarisch, von daher auch keien Fehlerbehandlung.
Das Problem hast du dir selbst gebaut.
Du hast drei voneinander unabhängige IF-Blöcke, die NACHEINANDER geprüft werden.
Bei den Eingaben 1 und 2 erfolgt im ersten oder im zweiten Block eine Ausgabe. zusätzlich treffen diese beiden Eingabewerte nicht auf die Bedingung im dritten Block zu, weshalb hier der ELSE-Zweig greift.
Die Ausgabe des Textes ist nach deinem Code also vollkommen korrekt.
Wenn du hier korrekt vorgehen wolltest, dann machst du aus
if .....
if ....
if ....
else.....
eben einen gescheiten Block mit
if ....
elif ....
elif ....
else ....
Damit ist das eine Abfrage mit mehreren Bedingungen und der Else-Zweig greift nur dann, wenn keiner der vorangegangenen Bedingungen erfüllt wird.
Vielen Dank für die schnelle Antwort, es hat jetzt funktioniert