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