对小数返回 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 版本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python中的 isdigit()方法

python函数--isdigit()方法

Python3中操作字符串str必须记住的几个方法

isdigit()

字符串的常用方法

python 判断字符串是字母 数字 大小写还是空格