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
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.
das except value error muss ich morgen ausprobieren, daran habe ich garnicht gedacht aber das wäre ja ideal :D
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()
...
habs gefunden, isdigit() wird klein geschrieben
danke, freut mich, dass es so simpel geht :D