Python str.isdigit的一个版本,它为小数返回True?

Python str.isdigit的一个版本,它为小数返回True?,python,string,python-2.7,Python,String,Python 2.7,我想测试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_

我想测试
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
我建议采用这种方法

如果其参数不是有效的浮点值,则引发
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'

调用
float(number)
并检查
ValueError
是最简单的方法(这称为EAFP编程)。谢谢!这起作用了。
number = raw_input("Enter a number: ")
try:
    return float(number)
except ValueError:
    sys.exit()