当代码应该返回布尔值时,代码将返回“ None”

时间:2020-06-22 05:54:54

标签: python python-3.x

def divSum(number):
  divisors = [1]
  for i in range(2, number):
    if (number % i)==0:
      divisors.append(i)
  return sum(divisors)
l=[]
def isFriendly(x):
  if x==1:
    return False
  elif x in l:
    return True
  else:
    l.append(x)
    #x=divSum(x)
    isFriendly(divSum(x))

z = isFriendly(20)
print(z)

但是,如果我将“ return”替换为“ print”,则可以正确打印。我尝试了一个示例函数(而不是调用isFriendly)来接受一个数字,如果输入数字为1,则返回True,否则为False,并且返回正确的输出。

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

对于最后一个else循环,您不返回任何内容。这就是为什么它返回None的原因。但是,您的列表l确实被填充。 调用函数后,尝试打印l而不是z