为了账号安全,请及时绑定邮箱和手机立即绑定

检查字符串是否为浮点数

检查字符串是否为浮点数

UYOU 2022-06-07 16:46:44
我想接受输入并根据输入是否为有效数字返回真或假。这里有些例子:"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
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在我看来,最好的方法是使用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 False


list(map(is_number, l))

# [True, True, False, False, True, True, False, False, True, False, 

#  True, False, False, False]


查看完整回答
反对 回复 2022-06-07
?
慕慕森

TA贡献1856条经验 获得超17个赞

好吧,首先,如果您不打算更改,则无需转换s为,而您可能不会这样做。切片在字符串上的工作方式与在列表上的工作方式几乎相同。如果你真的想检查是否是一个有效的 python 号码,你可以使用str(s)ss


inp = input('input character: ')

def is_valid_num(s):

    try: 

        float(inp)

        return True

    except ValueError:

        return False


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信