Как проверить, является ли необработанный ввод целочисленным в Python 2.7?
Есть ли метод, который я могу использовать, чтобы проверить, если raw_input
такое целое число?
Я нашел этот метод после исследования в Интернете:
print isinstance(raw_input("number: ")), int)
но когда я запускаю его и ввод 4
например, я получаю FALSE
, Я немного новичок в Python, любая помощь будет оценена.
5 ответов
isinstance(raw_input("number: ")), int)
всегда дает False
так как raw_input
вернуть строковый объект в результате.
использование try: int(...) ... except ValueError
:
number = raw_input("number: ")
try:
int(number)
except ValueError:
print False
else:
print True
или использовать str.isdigit
:
print raw_input("number: ").isdigit()
ПРИМЕЧАНИЕ Второй дает False
за -4
потому что он содержит не цифры. Используйте второй, если вы хотите только цифры.
ОБНОВЛЕНИЕ Как отметил JF Себастьян, str.isdigit
зависит от локали (Windows). Может вернуться True
четное int()
вызовет ValueError для ввода.
>>> 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'
Вы можете сделать это следующим образом:
try:
val = int(raw_input("number: "))
except ValueError:
# not an integer
Попробуйте этот метод.isdigit(), см. Пример ниже.
user_input = raw_input()
if user_input.isdigit():
print "That is a number."
else:
print "That is not a number."
Если вам требуется, чтобы ввод оставался цифрой для дальнейшего использования, вы можете добавить что-то вроде:
new_variable = int(user_input)
Вот мое решение
`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()