对小数返回 True 的 str.isdigit 版本? [复制]
Posted
技术标签:
【中文标题】对小数返回 True 的 str.isdigit 版本? [复制]【英文标题】:A version of str.isdigit that returns True for decimal fractions? [duplicate] 【发布时间】:2015-11-16 23:26:33 【问题描述】:我想测试raw_input
以确保字符串仅包含数字并且最多包含一个小数点。 str.isdigit()
看起来很有希望,但如果字符串中有小数点,它将不会返回 True。
理想情况下,代码应如下所示:
def enter_number():
number = raw_input("Enter a number: ") # I enter 3.5
if number.SOMETHING: # SOMETHING is what I am looking for
float_1 = float(number)
return float_1
else
sys.exit()
half = enter_number() / 2 # = 1.75
double = enter_number() * 2 # = 7
【问题讨论】:
调用float(number)
并检查ValueError
是最简单的方法(这称为EAFP 编程)。
【参考方案1】:
我建议使用EAFP 方法。
float
如果其参数不是有效的浮点数,则引发 ValueError
异常:
In [6]: float('bad value')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-dc9476bbdbf8> in <module>()
----> 1 float('bad value')
ValueError: could not convert string to float: 'bad value'
你可以抓住它:
number = raw_input("Enter a number: ")
try:
return float(number)
except ValueError:
sys.exit()
【讨论】:
谢谢!这行得通。以上是关于对小数返回 True 的 str.isdigit 版本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章