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
![](https://images.gutefrage.net/media/user/HugeGameArtGD/1549979624630_nmmslarge__385_50_648_648_35a2a3eff93e16d42cc1bc57cdbb2e4f.png?v=1549979625000)
Sollte funktionieren mit isDigit() vor dem Casten.
Woher ich das weiß:Recherche
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Bezieht sich IsDigit() nicht auf ein einzelnes Zeichen?
Wäre es nicht besser, einen String x mittels regulärer Ausrücke zu testen?
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
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
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)