Python Schleife

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Joel Isaak

Hallo, ich bin neu hier und kenne mich noch nicht so gut mir der Sprache Python aus. Kann mir bitte jemand eine Schleife für mein Projekt erstellen? Ich habe mir schon einige Tutorials angeschaut und habe auch auf einigen Webseiten nach einer Lösung ausschau gehalten, aber leider komme ich mit den Tutorials und das was auf den Webseiten geschrieben wird nicht zurecht.

Code: Alles auswählen

Kaesekuchen = 'K'
Schokoladenkuchen = 'S'
Erdbeerkuchen = 'E'



auswahl = input('Wähle ein Rezept (K=Kaesekuchen, S=Schokoladenkuchen, E=Erdbeerkuchen :')

if auswahl == Kaesekuchen:
    print('2 Eier, 100ml Milch, 200g mehl, 50g Zucker')
elif auswahl == Schokoladenkuchen:
    print('3 Eier, 100ml Milch, 200g mehl, 50g Zucker')
elif auswahl == Erdbeerkuchen:
    print('4 Eier, 100ml Milch, 200g mehl, 50g Zucker')
Benutzeravatar
Dennis89
User
Beiträge: 1506
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

so? :)

Code: Alles auswählen

from time import sleep

Kaesekuchen = 'K'
Schokoladenkuchen = 'S'
Erdbeerkuchen = 'E'



auswahl = input('Wähle ein Rezept (K=Kaesekuchen, S=Schokoladenkuchen, E=Erdbeerkuchen :')

if auswahl == Kaesekuchen:
    print('2 Eier, 100ml Milch, 200g mehl, 50g Zucker')
elif auswahl == Schokoladenkuchen:
    print('3 Eier, 100ml Milch, 200g mehl, 50g Zucker')
elif auswahl == Erdbeerkuchen:
    print('4 Eier, 100ml Milch, 200g mehl, 50g Zucker')
for number in range(3):
    print(f"Hallo ich bin Schleifendurchgang Nr.:{number}")
    sleep(0.5)
print("Schleife vorbei")
Du müsstest etwas detailierte beschreiben, was du eigentlich haben möchtest und wie haben deine Schleifen ausgesehen, die nicht funktioniert haben?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
snafu
User
Beiträge: 6833
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Es geht wahrscheinlich nicht so sehr um die Schleife an sich, sondern um das Wiederfinden des ausgewählten Menüpunkts mittels Schleife. Das kann man rein zahlenbasiert mit enumerate() machen oder indem man die Benennung und das zugehörige Element jeweils in ein Tupel steckt. Alternativ dazu geht es auch mit einem Wörterbuch (engl. "dict") mittels Schlüsselabfrage. Und sofern man keine uralte Python-Version benutzt, dann behält das Wörterbuch auch die Reihenfolge der einzelnen Elemente beim Hinzufügen bei, was praktisch für die Übersicht der Menüpunkte ist. Ich würde bei Buchstaben ein Wörterbuch benutzen. Bei Zahlen würde ich eine einfache Liste in Verbindung mit enumerate() nehmen.
Zuletzt geändert von snafu am Samstag 23. September 2023, 08:44, insgesamt 1-mal geändert.
Joel Isaak

Danke für deine Bemühung, ist leider nicht das was ich wollte. Ich möchte das, das:

Code: Alles auswählen

auswahl = input('Wähle ein Rezept (K=Kaesekuchen, S=Schokoladenkuchen, E=Erdbeerkuchen :')
nach der Ausgabe eines Rezeptes wieder auftaucht, so das man noch ein Rezept auswählen kann. Und das dann halt immer so weiter.
Zuletzt geändert von Joel Isaak am Samstag 23. September 2023, 08:47, insgesamt 1-mal geändert.
Benutzeravatar
snafu
User
Beiträge: 6833
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Für eine immer wiederkehrende Ausgabe benutzt man ``while True:``. Wenn man eine Abbruchbedingung anbieten will (z. B. "e" für Ende), dann kann man mittels ``break`` in dem Moment die Schleife abbrechen.
Joel Isaak

Was muss ich jetzt hier eintragen? Ich habe unten was hinzugefügt.

Code: Alles auswählen

Kaesekuchen = 'K'
Schokoladenkuchen = 'S'
Erdbeerkuchen = 'E'
Ja = 'Ja'
Nein = 'Nein'

auswahl = input('Wähle ein Rezept (K=Kaesekuchen, S=Schokoladenkuchen, E=Erdbeerkuchen :')

if auswahl == Kaesekuchen:
    print('2 Eier, 100ml Milch, 200g mehl, 50g Zucker')
elif auswahl == Schokoladenkuchen:
    print('3 Eier, 100ml Milch, 200g mehl, 50g Zucker')
elif auswahl == Erdbeerkuchen:
    print('4 Eier, 100ml Milch, 200g mehl, 50g Zucker')

auswahl = input('Möchten sie noch ein Rezept auswählen? (Ja/Nein) ')

if auswahl == Nein:

elif auswahl == Ja:
    
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das Muster fuer Schleifen bis zum Abbruch ist zB dieses:

Code: Alles auswählen

while True:
   ... # tuwas
   if <abbruchbedingung>:
       break
Das musst du auf deinen Fall anpassen.
Joel Isaak

Danke, ich hab es geschafft!
Benutzeravatar
__blackjack__
User
Beiträge: 13931
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Joel Isaak: Hinweis zu ``if``/``elif``: Wenn so etwas in einem ``elif`` endet, sollte man immer überlegen was denn eigentlich passiert wenn alle Bedingungen die man da gestellt hat *nicht* zutreffen, und ob es dann sinnvoll ist einfach *nichts* zu machen in dem Fall. Hier beispielsweise wenn der Benutzer auf die Frage nach dem Kuchen ein "X" eingegeben hat. Dann wird einfach gar nichts ausgegeben, aber danach dann die Frage ob man noch ein Rezept auswählen möchte. Hier wäre es sehr sinnvoll noch ein ``else`` anzuhängen in dem der Benutzer darauf hingewiesen wird, dass es kein Rezept gibt für die Eingabe die er gemacht hat.

Ähnlich dann bei der "Ja"/"Nein"-Abfrage. Als was wird das gewertet wenn der Benutzer etwas anderes als diese beiden Möglichkeiten eingibt, und ist das Verhalten sinnvoll, aus Sicht des Benutzers?

Was auch sicher einige Benutzer stören wird, ist das die Eingabe *exakt* wie vorgegeben passieren muss. Also "Ja" oder "Nein" als ganze Worte inklusive der gleichen Gross-/Kleinschreibung. "n" oder "nein" wird da wie "Ja" behandelt. Man würde da eher nur den ersten Buchstaben der Eingabe prüfen und das dann auch unabhängig davon ob der gross oder klein geschrieben wurde. Damit man keine zwei Vergleiche machen muss, bietet es sich an die Eingabe vom Benutzer in Grossbuchstaben umzuwandeln, und dann nur gegen "J" und "N" zu prüfen.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Antworten