如何在 python 2.7 中检查原始输入是否为整数? [英] How do I check if raw input is integer in python 2.7?
问题描述
是否有一种方法可以用来检查 raw_input
是否为整数?
我在网上研究后发现了这个方法:
print isinstance(raw_input("number:")), int)
但是当我运行它并输入 4
时,我得到 FALSE
.我对 python 有点陌生,任何帮助将不胜感激.
isinstance(raw_input("number: ")), int)
总是产生 False
因为 raw_input
作为结果返回字符串对象.
使用 try: int(...) ... 除外 ValueError
:
number = raw_input("number:")尝试:整数(数字)除了值错误:打印错误别的:打印真
或使用 str.isdigit
:
print raw_input("number:").isdigit()
注意 第二个为 -4
产生 False
因为它包含非数字字符.如果您只需要数字,请使用第二个.
UPDATE 正如 J.F. Sebastian 指出的那样,str.isdigit
依赖于语言环境 (Windows).它可能会返回 True
,即使 int()
会为输入引发 ValueError.
Is there a method that I can use to check if a raw_input
is an integer?
I found this method after researching in the web:
print isinstance(raw_input("number: ")), int)
but when I run it and input 4
for example, I get FALSE
.
I'm kind of new to python, any help would be appreciated.
isinstance(raw_input("number: ")), int)
always yields False
because raw_input
return string object as a result.
Use try: int(...) ... except ValueError
:
number = raw_input("number: ")
try:
int(number)
except ValueError:
print False
else:
print True
or use str.isdigit
:
print raw_input("number: ").isdigit()
NOTE The second one yields False
for -4
because it contains non-digits character. Use the second one if you want digits only.
UPDATE As J.F. Sebastian pointed out, str.isdigit
is locale-dependent (Windows). It might return True
even int()
would raise ValueError for the input.
>>> 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'
这篇关于如何在 python 2.7 中检查原始输入是否为整数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!