isinstance(raw_input("number: ")), int)总是产生,False因为
raw_input返回字符串对象。
用途
try: int(...) ... except ValueError:
number = raw_input("number: ")try: int(number)except ValueError: print Falseelse: print True或使用
str.isdigit:
print raw_input("number: ").isdigit()注意 第二个之所以产生
False,
-4是因为它包含非数字字符。如果只需要数字,请使用第二个数字。
UPDATE
作为JF塞巴斯蒂安指出,
str.isdigit语言环境相关(Windows)中。它可能返回,
True甚至
int()会引发输入的ValueError。
>>> import locale>>> locale.getpreferredencoding()'cp1252'>>> 'xb2'.isdigit() # SUPERscript TWOFalse>>> 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'


