it-roy-ru.com

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

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

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

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

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

13
Alejandro Veintimilla

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()

NOTE Второй дает False для -4, потому что он содержит нецифровый символ. Используйте второй, если вы хотите только цифры.

UPDATE Как отметил Дж.Ф. Себастьян, 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'
19
falsetru

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

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

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

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

`

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

Попробуйте этот метод .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)
0
Elf Machine