检查字符串是否为实数

Ill*_*ist 3 python validation numbers

有没有一种快速的方法来查找字符串是否为实数,而不是一次只读取一个字符isdigit()并对每个字符进行操作?例如,我希望能够测试浮点数0.03001.

orl*_*rlp 12

如果你的意思是浮动作为实数,这应该工作:

def isfloat(str):
    try: 
        float(str)
    except ValueError: 
        return False
    return True
Run Code Online (Sandbox Code Playgroud)

请注意,这将在内部仍然循环您的字符串,但这是不可避免的.

  • @Illusionist:当你尝试用`float(str)替换`int(str)`时你看到了什么?您是否知道您可以自己尝试代码? (3认同)
  • *警告*:不要使用毯子`除了'条款!这是一个危险的坏习惯.明确地捕获`ValueError`. (2认同)

bfo*_*ine 7

>>> a = "12345" # good number
>>> int(a)
12345
>>> b = "12345G" # bad number
>>> int(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12345G'
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

def isNumber(s):
    try:
        int(s)
    except ValueError:
        return False
    return True
Run Code Online (Sandbox Code Playgroud)

如果你想要一个浮点数,请替换intfloat(感谢@cobbal).

  • 如果你想测试浮点数,用`float`替换`int` (2认同)