如何在 python 2.7 中检查原始输入是否为整数? [英] How do I check if raw input is integer in python 2.7?

查看:30
本文介绍了如何在 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.

<预><代码>>>>导入语言环境>>>locale.getpreferredencoding()'cp1252'>>>'xb2'.isdigit() # 上标二错误的>>>locale.setlocale(locale.LC_ALL,'丹麦')'Danish_Denmark.1252'>>>'xb2'.isdigit()真的>>>int('xb2')回溯(最近一次调用最后一次):文件<stdin>",第 1 行,在 <module> 中ValueError:int() 的无效文字,基数为 10:'xb2'

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆