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

时间:2013-10-18 03:08:00

标签: python string python-2.7 integer raw-input

是否有一种方法可用于检查raw_input是否为整数?

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

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

但是当我运行它并输入4时,我得到FALSE。 我是python的新手,任何帮助都会受到赞赏。

5 个答案:

答案 0 :(得分:20)

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

更新正如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'

答案 1 :(得分:8)

你可以这样做:

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

答案 2 :(得分:1)

这是我的解决方案

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

`

答案 3 :(得分:0)

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

答案 4 :(得分:0)

尝试使用.isdigit()方法,请参见下面的示例。

TEST_REQUIREMENTS = [
    'pytest',
    'pytest-django',
    'pylint',
    'pylint_django',
    'git-pylint-commit-hook',
]

setup(
    name='foo',
    version='0.0.1',
    description='Foo package',
    author='...',
    author_email='...',
    packages=['foo'],
    install_requires=INSTALL_REQUIREMENTS,
    setup_requires=SETUP_REQUIREMENTS,
    tests_require=TEST_REQUIREMENTS,
)

如果您要求输入保留数字以备将来使用,则可以添加以下内容:

user_input = raw_input()
if user_input.isdigit():
    print "That is a number."

else:
    print "That is not a number."