以下代码返回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']))
答案 0 :(得分:4)
您在调用时忘记返回checklen()
返回值:
checklen(linp)
在那里添加return
:
return checklen(linp)
请注意,>
已经为您提供了True
或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:]