繁体   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