一尘不染

如何检查python 2.7中的原始输入是否为整数?

python

有没有一种方法可以检查araw_input是否为整数?

我在网上研究后发现了这种方法:

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

但是当我运行它并输入4例如时,我得到了FALSE。我是python的新手,将不胜感激。


阅读 133

收藏
2020-12-20

共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是因为它包含非数字字符。如果只需要数字,请使用第二个数字。

UPDATE
作为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'
2020-12-20