簡體   English   中英

函數不返回布爾值,總是返回None

[英]Function not returning a boolean, returns None always

以下代碼返回None而不是True ,當輸入表明它應該明確返回True ,這是什么錯誤?

def checkminus(j):
    linp = []
    for a in j:
        if a == '-':
            if len(linp) > 0:
                linp = []
                return False
                quit()
            else:
                linp.append(a)
        else:
            linp.append(a)
    checklen(linp)
def checklen(k):
    l = len(k)
    print(l)
    if l>0:
        return True
    else:
        return False

print(checkminus(['-','5','5','8','2']))

您在調用它時忘記返回checklen()返回值:

checklen(linp)

在此處添加return

return checklen(linp)

請注意, >已經給您TrueFalse ,因此您可以直接將其返回:

def checklen(k):
    l = len(k)
    return l > 0

另一種方法是使用bool(l) 列表為空時為False ,否則為True

簡化checkminus()

def checkminus(j):
    linp = []
    for a in j:
        if a == '-':
            if linp:
                return False
        linp.append(a)
    return bool(linp)

在我看來,您似乎想確保-僅在列表的開頭,或者根本不存在。

如果是這樣,這會更容易:

def checkminus(j):
    return len(j) > 0 and '-' not in j[1:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM