If- und Elif-Schleife in Python noch einmal ausführen?
Hallo!
Ich schreibe gerade ein kleines Spaß-Programm in Python zum Programmieren-Lernen. Ich habe jetzt eine If- und Elif-Schleife gecodet. Wenn diese abgelaufen ist, wird der Nutzer gefragt, ob er das ganze nochmal machen möchte, oder das Programm beenden möchte. Den Code füge ich euch einmal ein.
Was muss ich eingeben, damit das klappt?
print("Hallo und herzlich willkommen beim Sternzeichen-Rausfinder!")
birthmonth_var = int(input("Bitte gib nun deinen Geburtsmonat ein (1-12): "))
birthday_var = int(input("Bitte gib nun deinen Geburtstag im Monat ein (1-31): "))
if birthmonth_var < 1 or birthmonth_var > 12 or birthday_var < 1 or birthday_var > 31:
print("Das ist nicht möglich! Du hast falsche Daten eingegeben.")
elif birthmonth_var == 1 and birthday_var <= 20:
print("Dein Sternzeichen ist Steinbock!")
elif birthmonth_var == 1 and birthday_var >= 21:
print("Dein Sternzeichen ist Wassermann!")
(gekürzt, wegen der Zeichenbegrenzung in Gutefrage. Hier kommen noch alle anderen elif-Bedingungen für die anderen Sternzeichen.)
noch_einmal = input('Möchtest du noch ein Sternzeichen herausfinden? "j" für ja und "n" für nein.')
input("Zum Beenden Enter drücken.")
6 Antworten
Dazu machst du einfach eine while-Schleife um die if-Anweisung (offiziell hießt das if-Anweisung, nicht if-Schleife). Du kannst entweder eine endlos-Schleife machen, indem du while True schreibst, oder du machst eine Variable die dann einfach auf False gesetzt wird. Das kommt im Prinzip auf das selbe raus...
Und noch was: Du konvertierst in der zweiten und dritten Zeile die Usereingabe direkt in einen Integer. Das funktioniert erst mal auch, aber was wenn der User "Hallo" eingibt? Dann stürzt das Programm ab... Um das vorzubeugen bietet sich eine try-except-Konstruktion an, mit der du vor der Konvertierung prüfen kannst, ob es wirklich eine Zahl ist und sie erst dann konvertieren. In diesem Zusammenhang wäre eine Funktion sinnvoll, aber da ich mir nicht sicher bin ob du sie schon gelernt hast werde ich es mal ohne machen... Alles in Allem sähe das dann etwa so aus:
print("Hallo und herzlich willkommen beim Sternzeichen-Rausfinder!")
while True:
birthmonth = input("Bitte gib nun deinen Guburtsmonat ein (1-12)")
try:
birthmonth_var = int(birthmonth)
break
except:
print("Ungültige Eingabe")
while True:
birthday = input("Bitte gib nun deinen Geburtstag im Monat ein (1-31)")
try:
birthday_var = int(birthday)
break
except:
print("Ungültige Eingabe")
while True:
if birthmonth_var < 1 or birthmonth_var > 12 or birthday_var < 1 or birthday_var > 31:
print("Das ist nicht möglich! Du hast falsche Daten eingegeben.")
elif birthmonth_var == 1 and birthday_var <= 20:
print("Dein Sternzeichen ist Steinbock!")
elif birthmonth_var == 1 and birthday_var >= 21:
print("Dein Sternzeichen ist Wassermann!")
#[...]
again = input("Möchtest du noch ein Sternzeichen herausfinden? "j" für ja und "n" für nein.")
if again.lower() == 'j':
pass
elif again.lower() == 'n':
break
else:
print("Ungültige Eingabe. Das Programm wird beendet.") #hier kannst du natürlich irgendwas machen, und auch selbst entscheiden ob das Programm dann beendet werden soll oder nicht...
break
Es gibt keine IF oder Elif-Schleife und Du solltest dich dringend mit den Grundlagen der Programmierung befassen.
Das könntest du ruhig bisschen ausführen, dass es if-Anweisung heißt. Die Aussage ist zwar richtig, der Code aber auch...
Oh doch, die gibt es.
Das Programm ist mittlerweile komplett fertig, bugfrei und schummelsicher. Nicht danke für deine Hilfe! ;)
Entweder du packst alles in eine While True Schleife und unten machst du.dann If again == "Nein": Break oder abrr du machst es so wie die anderen Kommentare hirr
Du erstellst eine variable -> "running = True" und dann machst du eine While-Schleife > "while running:".
Dadurch wird das Programm so lange wiederholt, bis running = False ist.
Du musst alles einfach in diese While-Schleife machen, und wenn der Benutzer das Programm nicht
nocheinmal ausführen möchte, dann wird running auf "False" gesetzt.
grüße Leo
Bei einer If-Abfrage handelt es sich um die Prüfung ob eine Bedingung erfüllt ist - ELIF / ELSE sind Alternativen zur zuvor geprüften Bedingung.
Schleifen führen einen oder Mehrere Befehle immer wieder aus bis die Bedingung erfüllt oder nicht mehr erfüllt ist oder eine Variable (Zähler) einen bestimmten Wert erreicht hat.
Es gibt While-Schleifen, Do-While-Schleifen und For-Schleifen aber keine IF-Schleifen.
Die IF-Schleife findest Du im Netz nur, weil einige Idioten von anderen Idioten abschreiben.