有没有一种方法可以用来检查raw_input
是否为整数?
在网上研究后,我找到了这种方法:
print isinstance(raw_input("number: ")), int)
但是当我运行它并输入例如 4
,我得到了FALSE
。我对Python比较新,任何帮助都将不胜感激。
有没有一种方法可以用来检查raw_input
是否为整数?
在网上研究后,我找到了这种方法:
print isinstance(raw_input("number: ")), int)
但是当我运行它并输入例如 4
,我得到了FALSE
。我对Python比较新,任何帮助都将不胜感激。
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()
注意 第二个示例对于 -4
的结果是 False
,因为它包含非数字字符。如果您只想要数字,则请使用第二个示例。
更新 正如 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'
try:
val = int(raw_input("number: "))
except ValueError:
# not an integer
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)
def checker():
inputt = raw_input("how many u want to check?")
try:
return int(inputt)
except ValueError:
print "Error!, pls enter int!"
return checker()
这是我的解决方案
`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'),
`
str.isdigit()
可能会受到区域设置的影响(因为微软),即使int()
会因输入而引发 ValueError,它也可能返回True
。 - jfsraw_input()
返回的是str
对象,而不是unicode
对象。因此我认为str.isdigit
会按预期工作。你能给我一个例子吗? - falsetru