一个返回十进制小数为True的版本的str.isdigit?

24 浏览
0 Comments

一个返回十进制小数为True的版本的str.isdigit?

这个问题已经有了答案

如何检查一个字符串是否表示为一个数字(浮点数或整数)?

我想要测试 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

admin 更改状态以发布 2023年5月24日
0
0 Comments

我建议采用EAFP的方法。

float会在其参数不是有效的浮点数时引发ValueError异常:

In [6]: float('bad value')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
 in ()
----> 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()

0