Ale*_*lla 13 python string integer raw-input python-2.7
有没有一种方法可以用来检查a raw_input是否是整数?
我在网上研究后发现了这种方法:
print isinstance(raw_input("number: ")), int)
Run Code Online (Sandbox Code Playgroud)
但是当我运行它并输入4例如,我得到FALSE.我是python的新手,任何帮助都会受到赞赏.
fal*_*tru 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
Run Code Online (Sandbox Code Playgroud)
或使用str.isdigit:
print raw_input("number: ").isdigit()
Run Code Online (Sandbox Code Playgroud)
注:第二个产量False的-4,因为它包含非数字字符.如果只需要数字,请使用第二个.
更新正如JF 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'
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
try:
val = int(raw_input("number: "))
except ValueError:
# not an integer
Run Code Online (Sandbox Code Playgroud)