检查字符串是否为浮点数

我想接受输入并根据输入是否为有效数字返回真或假。这里有些例子:


"0" => true

" 0.1 " => true

"abc" => false

"1 a" => false

"2e10" => true

" -90e3   " => true

" 1e" => false

"e3" => false

" 6e-1" => true

" 99e2.5 " => false

"53.5e93" => true

" --6 " => false

"-+3" => false

"95a54e53" => false

我有一个所有有效字符的列表,我决定使用切片符号来查看输入的第 0 个索引中的哪个字符与任何有效字符匹配。但是,代码将输入误读9为错误。这是我目前的完整代码。我还没有检查所有条件:


class Solution:

    def isNumber(self, s: str) -> bool:

        valid_char = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '+', 'e', '.']

        str_lst = list(s)


        if str_lst[0] in valid_char[0:10]:

            return True

        else:

            return False


UYOU
浏览 179回答 2
2回答

子衿沉夜

在我看来,最好的方法是使用try/except子句尝试将字符串转换为float:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => true" -90e3   " => true" 1e" => false"e3" => false" 6e-1" => true" 99e2.5 " => false"53.5e93" => true" --6 " => false"-+3" => false"95a54e53" => false让我们用上面的字符串生成一个列表:l = ["0", " 0.1 ", "abc", "1 a", "2e10", " -90e3   ", " 1e", "e3",      " 6e-1", " 99e2.5 ", "53.5e93", " --6 ", "-+3", "95a54e53"]def is_number(s):    try:        float(s)        return True    except ValueError:        return Falselist(map(is_number, l))# [True, True, False, False, True, True, False, False, True, False, #  True, False, False, False]

慕慕森

好吧,首先,如果您不打算更改,则无需转换s为,而您可能不会这样做。切片在字符串上的工作方式与在列表上的工作方式几乎相同。如果你真的想检查是否是一个有效的 python 号码,你可以使用str(s)ssinp = input('input character: ')def is_valid_num(s):    try:         float(inp)        return True    except ValueError:        return False
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python