Python 检查字符串是否为浮点数

Python 检查字符串是否为浮点数,python,string,Python,String,我假设接受一个输入并根据输入是否为有效数字返回true或false。以下是一些例子: "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" => tru

我假设接受一个输入并根据输入是否为有效数字返回true或false。以下是一些例子:

"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
误读为false。这是我目前的全部代码。我尚未检查所有条件:

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

首先,如果您不打算更改
s
,则无需将
s
转换为
str(s)
,而您可能不会这样做。切片在字符串上的作用与在列表上的作用几乎相同。如果您确实想检查
s
是否是有效的python编号,则可以使用

inp=input('输入字符:')
def为有效数量:
尝试:
浮点数(inp)
返回真值
除值错误外:
返回错误

在我看来,实现这一点的最佳方法是使用
try
/
except
子句尝试将字符串转换为
float


让我们用上面的字符串生成一个列表:

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 False

list(map(is_number, l))
# [True, True, False, False, True, True, False, False, True, False, 
#  True, False, False, False]

可能的复制品很聪明。您基本上使用Python的错误机制作为代码的一部分,而不必构建整个算法来查看每个字符是否有效。我投了赞成票,接受了你的回答。如果你认为这是一个被问得很好的问题,你能不能也给我一张赞成票?我已经接受了雅图的回答,但我会给你一张赞成正确方法的赞成票。如果你认为这是一个被问得很好的问题,你也能给我一张赞成票吗?谢谢:)是的,这是一种众所周知的解决这种情况的方法。
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 False

list(map(is_number, l))
# [True, True, False, False, True, True, False, False, True, False, 
#  True, False, False, False]