While Schleife nicht endlos durchlaufen lassen

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
superdario99
User
Beiträge: 7
Registriert: Freitag 12. August 2022, 10:24

Moin,

bin ein ziemlicher Neuling in Python und generell der Programmierung.
Ich wollte einfach zum üben ein kleines Programm schreiben, wo ich per Input eine Zahl zwischen 0 und 5 eingeben muss.
Sollte die eingegebene Zahl größer als 5 sein, soll eine entsprechende Meldung kommen und die Eingabe soll sich wiederholen.
Problem aktuell ist aber, dass die Message dann endlos wiederholt wird, ist ja auch irgendwie logisch.
Wie kann ich das unterbinden?

Code: Alles auswählen

number_3 = int(input("Gebe eine Zahl von 0 bis 5 an"))
while number_3 > 5:
    print("Deine Eingabe ist größer als 5!")
if number_3 <= 5:
    print("Super! Deine Nummer lautet: " + str(number_3))
Oder macht eine while Schleife in meinem Fall keinen Sinn und ich sollte es irgendwie anders schreiben?

Gruß, Dario
Sirius3
User
Beiträge: 17709
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie Du schon schriebst, muss sich die Eingabe wiederholen, also innerhalb der while-Schleife stehen. Nummern an Variablennamen sind schlecht, weil sie nichts aussagen.
Statt Strings mit + zusammenzustückeln benutzt man Formatstrings.

Code: Alles auswählen

while True:
    number = int(input("Gebe eine Zahl von 0 bis 5 an"))
    if number <= 5:
        break
    print("Deine Eingabe ist größer als 5!")
print(f"Super! Deine Nummer lautet: {number}")
superdario99
User
Beiträge: 7
Registriert: Freitag 12. August 2022, 10:24

Sirius3 hat geschrieben: Freitag 12. August 2022, 11:31 Wie Du schon schriebst, muss sich die Eingabe wiederholen, also innerhalb der while-Schleife stehen. Nummern an Variablennamen sind schlecht, weil sie nichts aussagen.
Statt Strings mit + zusammenzustückeln benutzt man Formatstrings.

Code: Alles auswählen

while True:
    number = int(input("Gebe eine Zahl von 0 bis 5 an"))
    if number <= 5:
        break
    print("Deine Eingabe ist größer als 5!")
print(f"Super! Deine Nummer lautet: {number}")
Verstehe... Funktioniert, vielen dank! Auch das mit den Formatstrings ist ganz cool, hab ich bislang sonst noch nirgendwo gelesen.
Wie kriege ich es jetzt hin, dass ebenfalls eine Meldung kommt, wenn ich nichts bzw. garkeine Zahl eingegeben habe?
Aktuell kommt, wenn ich nichts eingebe ein Error:

Code: Alles auswählen

line 26, in <module>
number_3 = int(input("Gebe eine Zahl von 0 bis 5 an"))
ValueError: invalid literal for int() with base 10: ''
Sirius3
User
Beiträge: 17709
Registriert: Sonntag 21. Oktober 2012, 17:20

Dazu musst Du den ValueError in einem except-block abfangen.

Code: Alles auswählen

while True:
    try:
        number = int(input("Gebe eine Zahl von 0 bis 5 an"))
    except ValueError:
        print("Eine Zahl eingeben.")
    else:
        if number <= 5:
            break
        print("Deine Eingabe ist größer als 5!")
print(f"Super! Deine Nummer lautet: {number}")
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Du kannst den Fehler abfangen und behandeln:

Code: Alles auswählen

while True:
    try:
        number = int(input("Gib eine Zahl von 0 bis 5 an"))
    except ValueError:
        print("Du musst eine Zahl eingeben.")
    else:
        if number > 5:
            print("Deine Eingabe ist größer als 5!")
        else:
            print(f"Super! Deine Nummer lautet: {number}")
            break
superdario99
User
Beiträge: 7
Registriert: Freitag 12. August 2022, 10:24

Super, vielen Dank euch beiden!
Letzte Frage, dann bin ich erstmal still.

Wie müsste ich die while schleife weiter schreiben, wenn ich noch andere Bedingungen hinzufügen will.
Wie z.B die Zahl darf auch nicht kleiner als 0 sein etc.
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Wenn du dir den Code ansiehst, dann ist ja recht leicht festzustellen wo und wie geprüft wird, ob die Bedingung erfüllt ist. Dieses Konzept in Verbindung mit https://docs.python.org/3/tutorial/cont ... statements sollte alles erklären.
Benutzeravatar
Kebap
User
Beiträge: 686
Registriert: Dienstag 15. November 2011, 14:20
Wohnort: Dortmund

> dann bin ich erstmal still

Ist schon in Ordnung. Jeder hat mal angefangen.
Versuch aber auch selbst auszuprobieren und zeig hier deine Versuche! :mrgreen:
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
Antworten