Как проверить, является ли исходный ввод целочисленным в python 2.7?

Есть ли метод, который я могу использовать, чтобы проверить, является ли raw_input целое число?

Я нашел этот метод после исследования в Интернете:

print isinstance(raw_input("number: ")), int)

но когда я запустил его и введите 4, например, я получаю FALSE. Я немного новичок в python, любая помощь будет оценена.

Ответ 1

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, потому что он содержит символ без цифр. Используйте второй, если хотите только цифры.

ОБНОВЛЕНИЕ. Как отметил Ю.Ф. Себастьян, 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'

Ответ 2

Вы можете сделать это следующим образом:

try:
    val = int(raw_input("number: "))
except ValueError:
    # not an integer

Ответ 3

вот мое решение

`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'),

`

Ответ 4

def checker():
  inputt = raw_input("how many u want to check?")
  try:
      return int(inputt)
  except ValueError:
      print "Error!, pls enter int!"
      return checker()