关于Python:str.isdigit返回true

A version of str.isdigit that returns True for decimal fractions?

本问题已经有最佳答案,请猛点这里访问。

我想测试raw_input,以确保字符串只包含数字,最多只包含一个小数点。str.isdigit()看起来很有希望,但如果字符串中有小数点,它将不会返回true。

理想情况下,代码如下所示:

1
2
3
4
5
6
7
8
9
10
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


我建议采用EAFP方法。

如果参数不是有效的float,那么float将引发ValueError异常:

1
2
3
4
5
6
7
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'

你可以抓住它:

1
2
3
4
5
number = raw_input("Enter a number:")
try:
    return float(number)
except ValueError:
    sys.exit()