-1

以下代码返回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']))
4

1 回答 1

4

checklen()调用时忘记返回返回值:

checklen(linp)

在那里添加一个return

return checklen(linp)

请注意,>已经为您提供了Trueor False,因此您可以直接返回:

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:]
于 2013-10-05T21:37:26.753 回答