是否有一种方法可用于检查raw_input
是否为整数?
我在网上研究后发现了这种方法:
print isinstance(raw_input("number: ")), int)
但是当我运行它并输入4
时,我得到FALSE
。
我是python的新手,任何帮助都会受到赞赏。
答案 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."