def divisors(n):
ans =0
for i in range(n):
i += 1
k=n%i
if k!=1:
ans=i
return ans
print(20)
我运行时功能不正常打印n
值而不是打印除数。
答案 0 :(得分:8)
三个关键问题是:
k=n%i
返回余数 - 如果余数!= 1则不表示i
是除数!ans
,并在函数的末尾返回在满足if
条件的最后一次迭代中找到的值。您要做的是将所有ans
累积到列表中并返回该列表。 print
没有调用该函数 - 它只是打印数字20。我没有发布更正的解决方案,因为我认为你自己解决这些错误是一个很好的练习,祝你好运!
答案 1 :(得分:3)
我将结果保存在列表中:
def divisors(n):
ans = []
for i in range(n):
i += 1
k=n%i
if k==0:
ans.append(i)
return ans
print divisors(20)
答案 2 :(得分:2)
如果您使用lists-comprehension
的方式更优雅,也可以将其减少一行。
def divisors(n):
return [i+1 for i in range(n) if n%(i+1) == 0]
答案 3 :(得分:1)
尝试将The max of pancakes eaten by a person was: 3
The minimum of pancakes eaten by a person was: 1
charlie and dan ate the most pancakes
alice ate the least pancakes
用于生成器函数用于此目的:
yield