Python 萨姆迪夫,你能帮我查一下密码吗

Python 萨姆迪夫,你能帮我查一下密码吗,python,Python,编写一个名为sumDivs的函数,该函数接受一个正整数并计算 它的所有适当因子之和。使用for循环查找并求和 给定整数 比如说, >>> sumDivs(8) 7 这就是我所拥有的: def sums(n): i=0 for i in range (1, n-1): if n % i == 0: return n-1 i+=1 你不应该返回你找到的第一个除数,你应该边加边加;在你的循环中,i接受从1到

编写一个名为sumDivs的函数,该函数接受一个正整数并计算 它的所有适当因子之和。使用for循环查找并求和 给定整数

比如说,

>>> sumDivs(8)
7
这就是我所拥有的:

def sums(n):
    i=0
    for i in range (1, n-1):
        if n % i == 0:
            return n-1 
        i+=1

你不应该返回你找到的第一个除数,你应该边加边加;在你的循环中,i接受从1到n-2的值,变为范围1,n中的i;不需要为i定义初始值。请尝试以下方法:

def sums(n):
    sum=0
    for i in range (1, n):
        if n % i == 0:
            sum+=i 
    return sum

问题是什么?从代码中得到什么结果?如果在循环的中间返回N-1,那么函数将返回。那不可能是你想要的。显然,如果你想对一些数字求和,你需要将总数存储在某种变量中,然后反复添加,这样你就可以在最后返回总数;没有理由预先设置i=0,或者在循环的中间i=1。还有,为什么一开始是n-1而不是n?如果你知道自己在做什么,这其实是有原因的…但是有更好的理由使用不同的东西,这是显而易见的…所以我怀疑这不是你的原因。谢谢,我知道我去哪里了wrong@kady484:如果答案对你有用,你能接受它来通知你不再需要这个问题的帮助吗?