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

2024-04-23 13:52:02 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有方法可以用来检查raw_input是否为整数?

我在网上调查后发现了这种方法:

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

但是当我运行它并输入4例如,我得到FALSE。 我对python还不太熟悉,如果有什么帮助我会很感激的。


Tags: 方法falsenumberinputraw整数intisinstance
3条回答

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

或者使用^{}

print raw_input("number: ").isdigit()

注意第二个生成False-4,因为它包含非数字字符。如果你只想要数字,就用第二个。

更新正如J.F.Sebastian指出的,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'

这是我的解决方案

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

`

你可以这样做:

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

相关问题 更多 >