Как проверить, является ли необработанный ввод целочисленным в 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()
Другие вопросы по тегам