检查字符串是否正确

2024-09-28 01:34:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我假设接收一个输入,并根据输入是否有效返回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

Tags: 代码falsetrue示例列表return切片字符
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 False

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

首先,如果你不打算改变s,那么没有必要把s转换成str(s),而你可能不会这样做。切片在字符串上的工作方式与在列表上的工作方式几乎相同。如果您真的想检查s是否是一个有效的python数字,您可以使用

inp = input('input character: ')
def is_valid_num(s):
    try: 
        float(inp)
        return True
    except ValueError:
        return False

相关问题 更多 >

    热门问题