Wie funktioniert das (Python)?

2 Antworten

Wuuuuus ist da passiert? Fangen wir noch mal an. Von Grund auf. Und dann erkläre ich dir Zeile für Zeile was ich gemacht habe.

rezept = input("Welches Rezept willst du _> ")
if rezept == "1":
  print("Für Käsekuchen brauchst du ...")
elif rezept == "2":
  print("Für Erdbeeren brauchst du ...")
elif rezept == "3":
  print("Für Waffeln brauchst du ...")
else:
  print("Tschuldigung, dieses Rezept gibt es nicht")

Ich finde deinen Code bisschen süß, weil ich genau verstehe was du da versucht hast haha. Fangen wir an mit der Erklärung.

rezept = input ... -> sieht erstmal komisch aus. Aber es ist einfach. Also wir wissen ja das man durch input dem user die möglichkeit gibt, text einzugeben. Diesen Text, den der User eingegeben hat speichern wir in einer Variable. diese Variable heißt bei uns jetzt rezept.

if rezept == "1": -> Das ist eigentlich auch ganz Simpel. Übersetzt heißt es soviel wie "Wenn der User 1 eingegeben hat". Wenn er 1 eingeben hat, dann sagen wir was er für Käsekuchen braucht usw.

Was ist eigentlich dieses elif? Das ist auch ganz einfach. Das heißt so viel wie "andernfalls". Also "Wenn er nicht 1 eingegeben hat aber dafür 2 eingegeben hat". Und ganz am ende noch ein else, das kommt wenn der User nicht 1, 2 oder 3 eingegeben hat.

Ich hab gemerkt, dass du deine Variablen 1. mit Großbuchstaben und 2. mit ä, ö und ü bennant hast. Das macht man in Python nicht, man hat das sogennante snake_case. und anstatt z.B. ä macht man ae.

Ich hoffe meine Antwort konnte dir helfen, frag einfach wenn du was nicht verstanden hast.

Woher ich das weiß:eigene Erfahrung
slivki355353 
Fragesteller
 30.11.2022, 23:48

Danke für deine Hilfreiche Antwort. Hab auch verstanden was der Fehler war durch dir :)

1
slivki355353 
Fragesteller
 01.12.2022, 00:11

Ich hab alles verstanden aber warum sind dort Zwei "==" was bedeutet das genau also warum ist es Falsch wenn man es mit einem gleich Zeichen macht?

0
Lukasistein  01.12.2022, 00:12
@slivki355353

== bedeutet so viel "wenn bla gleich bla". Damit schaut man ob der Wert gleich ist.

1
Lukasistein  01.12.2022, 00:15
@slivki355353

Tut mir leid falls ich erst morgen antworte, aber ich geh jetzt schlafen. Oder ich versuche es zumindest, morgen ist Schule haha.

0
slivki355353 
Fragesteller
 01.12.2022, 00:16
@Lukasistein

Haha fühl ich hab auch Morgen Schule gute Nacht ich lass dich mal Schlafen ^^

0

Hmm, willst du, das wir dir alle Fehler auflisten oder sollen wir lieber ein funktionierendes Programm daraus machen?

# Klasse Rezept definieren
# Die Zutaten könnte man auch als Liste einbauen
# und die eigentliche Kochanleitung fehlt auch noch
class Rezept:
    def __init__(self, name, zutaten):
        self.name = name
        self.zutaten = zutaten

# Liste mit Rezepten aufbauen
rezepte = ( \
    Rezept("Pfannkuchen", "Kuchen mit Pfanne"), \
    Rezept("Waffeln", "Eier mit Mehl"), \
    Rezept("Käsekuchen", "Käse mit Eier"), \
    Rezept("Erdbeeren", "Erdbeeren mit Wasser") \
)

# Nachfragen, welches Rezept angezeigt werden soll
# (Frage wird wiederholt, wenn der Benutzer Blödsinn eingibt.)
wahl_rezept = None
while wahl_rezept == None:
    for nummer, rezept in enumerate(rezepte, start=1):
        print(f"({nummer}) {rezept.name}")

    rezeptNr = input("Welches Rezept willst du wissen? ")
    try:
        rezeptNr = int(rezeptNr)
    except ValueError:
        rezeptNr = 0
        
    if rezeptNr > 0 and rezeptNr <= len(rezepte):
        wahl_rezept = rezepte[rezeptNr-1]
    
    print()

# Rezept anzeigen
print(f"So gehen {wahl_rezept.name}:")
print()
print(wahl_rezept.zutaten)

# Auf Taste warten
print()
input("Drücke Enter, um das Programm zu beenden")
Woher ich das weiß:eigene Erfahrung
slivki355353 
Fragesteller
 01.12.2022, 13:04

Also wenn du die Fehler sagen könntest wäre es eigentlich nicht schlecht. Also wenn du willst ^^

0
daCypher  01.12.2022, 13:56
@slivki355353

Ok. Ich gehe einfach mal deinen ganzen Code durch:

Waffeln = "Waffel"
Käsekuchen = "Käse"
Erdbeeren = "Berren"

Vom Rechtschreibfehler abgesehen: Du erstellst drei Variablen, deren Werte du später nie benutzt. Die Zeilen könntest du also weglassen.

input("Rezep aus wählen:")

Von den Rechtschreibfehlern abgesehen: Die Eingabe, die der Benutzer hier macht, wird nirgendwo gespeichert. Das heißt, es ist egal, welche Eingabe der Benutzer macht. Du müsstest also z.B. das hier machen: auswahl = input("Rezept auswählen: ")

("")
("(1) Pfannkuchen")
("")
("(2) Waffeln")
("")
("(3) Käsekuchen")

(Oh, keine Rechtschreibfehler 👍) Ich denke mal, das soll als Auswahl angezeigt werden. Da fehlen einerseits die print Befehle vorne dran, so sind es einfach nur Konstanten, die ohne etwas zu tun im Code stehen. Andererseits sollten die Optionen natürlich angezeigt werden, bevor der Benutzer eine Auswahl getroffen hat und nicht so "schön, dass du was ausgewählt hast, das hier wären deine Optionen gewesen". Davon abgesehen sind hier plötzlich Pfannkuchen aufgetaucht und dafür Erdbeeren verschwunden.

Waffeln = True
Käsekuchen = False
Erdbeeren = False

Mir ist nicht ganz klar, was du hiermit bezweckst. Einerseits überschreibst du damit die Variablen, wo du am Anfang Wörter zugewiesen hast, andererseits sind unabhängig vom input immer die Waffeln True und die anderen beiden False.

if Waffeln:
    print("Eier mit Mehl")

Das macht schon ein bisschen Sinn. Dadurch, dass wie gesagt, Waffeln immer True sind, wird aber auch immer der Code in dem if ausgeführt

else:

und der Code im Else nie.

    Käsekuchen

Die Variable "Käsekuchen" steht hier ohne irgendeine Anweisung in der Luft. Ich denke mal, dass du das hier ausführen wolltest, wenn Käsekuchen True ist. Wäre mit elif Käsekuchen: gegangen

    print("Käse mit Eier")

Das wird wie gesagt nie ausgeführt, weil Waffeln True sind und der Code nicht ins Else

Erdbeeren
print("Erdbeeren mit Wasser")

Hier hast du wieder das Gleiche, wie grade mit dem Käsekuchen. Die Variable Erdbeeren steht da, ohne eine Funktion zu haben. Dadurch, dass die beiden Zeilen nicht mehr eingerückt sind, gehören sie nicht mehr zum if-else und werden immer ausgeführt. Deshalb steht auch "Erdbeeren mit Wasser" in der Console, wenn du das Programm laufen lässt.

input("Drücke eine Beliebige Taste um es zu beenden")

Abgesehen vom Rechtschreibfehler (😜) macht die Zeile hier genau das, was sie tun soll.

Was mir noch aufgefallen ist: In dem input fragst du nach Zahlen, die eingegeben werden sollen, aber in deinem If werden keine Zahlen abgefragt.

0