Wie kann ich in Python einen Filter bauen?
Er soll alle Zahlen akzeptieren aber alles was keine Zahl ist rausfiltern und wieder eine Eingabe auffordern.
2 Antworten
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Die Frage hierbei wäre zunächst, was für dich eine valide Zahl darstellt.
Einfach nur eine Eingabe, die nur aus den Zeichen 0-9 besteht? Also nie Eingaben mit Vorzeichen oder Dezimalstelle? In dem Fall wäre isdigit eine passende Wahl.
Wenn du aber nach validen Werten filtern möchtest, die auch negativ/explizit positiv oder Fließkommazahlen sein können, wäre so eine Überprüfung passend:
def is_valid_number(text):
try:
float(text)
return True
except ValueError:
return False
# usage:
if is_valid_number("+12.3"):
print("Is valid number")
Statt einen Typecast auf float kannst du auch einen auf int machen, falls du nur Ganzzahlen haben möchtest.
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
das except value error muss ich morgen ausprobieren, daran habe ich garnicht gedacht aber das wäre ja ideal :D
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Mit der isDigit()-Funktion kann man überprüfen, ob ein String (also z.B. ein Input) nur aus Zahlen besteht.
in = input()
while not in.isDigit():
in = input()
...
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
habs gefunden, isdigit() wird klein geschrieben
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
danke, freut mich, dass es so simpel geht :D