Python, falsche Input Eingabe verhindern?
Liste = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
loop1 =True
while loop1:
monat = int(input("Für wie viele Monate hast du den Vertrag? \n "))
if monat not in Liste:
print("Vertippt?")
elif monat <= 1:
print("Alles klar, dein Vertrag dauert " + str(monat) +" Monat ")
break
elif monat > 1:
print("Alles klar, dein Vertrag dauert " + str(monat) +" Monate ")
break
Sollte der User versehentlich anstatt einer Zahl im Input "Monat" einen String schreiben, crashed das Programm. Wie kann ich auch bei einer String eingabe den Loop weiterführen?
2 Antworten
Sollte funktionieren mit isDigit() vor dem Casten.
Woher ich das weiß:Recherche
Bezieht sich IsDigit() nicht auf ein einzelnes Zeichen?
Wäre es nicht besser, einen String x mittels regulärer Ausrücke zu testen?
Das kannst du evtl mit "Try / Except" hinbekommen: https://pythonbasics.org/try-except/ - oder mit nem weiteren if, was überprüft ob es sich bei der Eingabe um einen String oder einen Integer handelt
Das problem ist, dass ich Try/ Except in einen neuen Loop machen muss, man kann ja keinen While Loop in einem While loop machen. Wäre mir irgendwie zu viel Aufwand.