python函数不能正常工作它不会返回用户应该获取的值

时间:2015-10-10 15:43:50

标签: python

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值而不是打印除数。

4 个答案:

答案 0 :(得分:8)

三个关键问题是:

  1. k=n%i返回余数 - 如果余数!= 1则不表示i是除数!
  2. 在for循环中,你保持覆盖ans,并在函数的末尾返回在满足if条件的最后一次迭代中找到的值。您要做的是将所有ans累积到列表中并返回该列表。
  3. 最后的print没有调用该函数 - 它只是打印数字20。
  4. 我没有发布更正的解决方案,因为我认为你自己解决这些错误是一个很好的练习,祝你好运!

答案 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