Gibt es eine Methode, mit der ich prüfen kann, ob ein raw_input
eine ganze Zahl ist?
Ich habe diese Methode nach Recherchen im Web gefunden:
print isinstance(raw_input("number: ")), int)
aber wenn ich es ausführe und 4
eingebe, bekomme ich zum Beispiel FALSE
. Ich bin irgendwie neu in Python, jede Hilfe wäre dankbar.
isinstance(raw_input("number: ")), int)
liefert immer False
, da raw_input
als Ergebnis ein String-Objekt zurückgibt.
Verwenden Sie try: int(...) ... except ValueError
:
number = raw_input("number: ")
try:
int(number)
except ValueError:
print False
else:
print True
oder benutze str.isdigit
:
print raw_input("number: ").isdigit()
NOTE Die zweite ergibt False
für -4
, da sie ein nicht-stelliges Zeichen enthält. Verwenden Sie die zweite, wenn Sie nur Ziffern wünschen.
UPDATE Wie J. F. Sebastian darauf hinwies, ist str.isdigit
abhängig vom Gebietsschema (Windows). Es könnte True
zurückgeben, selbst wenn int()
ValueError für die Eingabe auslösen würde.
>>> import locale
>>> locale.getpreferredencoding()
'cp1252'
>>> '\xb2'.isdigit() # SUPERSCRIPT TWO
False
>>> locale.setlocale(locale.LC_ALL, 'Danish')
'Danish_Denmark.1252'
>>> '\xb2'.isdigit()
True
>>> int('\xb2')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '\xb2'
Sie können es so machen:
try:
val = int(raw_input("number: "))
except ValueError:
# not an integer
hier ist meine Lösung
`x =raw_input('Enter a number or a Word: ')
y = x.isdigit()
if (y == False):
for i in range(len(x)):
print('I'),
else:
for i in range(int(x)):
print('I'),
`
def checker():
inputt = raw_input("how many u want to check?")
try:
return int(inputt)
except ValueError:
print "Error!, pls enter int!"
return checker()
Versuchen Sie diese Methode .isdigit (), siehe Beispiel unten.
user_input = raw_input()
if user_input.isdigit():
print "That is a number."
else:
print "That is not a number."
Wenn Sie möchten, dass die Eingabe zur weiteren Verwendung digital bleibt, können Sie Folgendes hinzufügen:
new_variable = int(user_input)