print(func(6)) # Should be 1+2+3=6
print(func(12)) # Should be 1+2+3+4+6=16
我写了一个函数,它只返回一个数字的所有除法器的列表
def func(num):
add=[]
for i in range(1,num-1):
if num%i==0:
add.append(i)
print(add)
你可以这样做:
def func(num):
add = [i for i in range(1, num-1) if num % i == 0]
return sum(add)
此代码给出:
print(func(6)) # Should be 1+2+3=6
print(func(12)) # Should be 1+2+3+4+6=16
返回除数之和:
def sum_divisors(n):
sum = 0
x = 1
while n != 0 and x < n :
if n % x == 0 :
sum += x
else:
sum += 0
x += 1
return sum
def func(num):
add = []
total_sum = 0
for i in range(1, num - 1):
if num % i == 0:
add.append(str(i))
total_sum += i
return "{}={}".format("+".join(add), total_sum)
所以我不确定这正是你想要的。但是您可以在python中使用sum((获得列表的总和,因此您的函数看起来像这个
def func(num):
add=[]
for i in range(1,num-1):
if num%i==0:
add.append(i)
return sum(add)
这将返回的正确输出
print(func(6)) # Should be 1+2+3=6
print(func(12)) # Should be 1+2+3+4+6=16
它也可以写为一个列表理解,如
def list_func(num):
return sum([i if num%i==0 else 0 for i in range(1, num-1)])