Seite 1 von 1

While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 10:29
von superdario99
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

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 11:31
von Sirius3
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}")

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 11:50
von superdario99
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: ''

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 12:14
von Sirius3
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}")

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 12:15
von einfachTobi
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

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 12:57
von superdario99
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.

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 13:05
von einfachTobi
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.

Re: While Schleife nicht endlos durchlaufen lassen

Verfasst: Freitag 12. August 2022, 15:50
von Kebap
> dann bin ich erstmal still

Ist schon in Ordnung. Jeder hat mal angefangen.
Versuch aber auch selbst auszuprobieren und zeig hier deine Versuche! :mrgreen: