使用While循环和If语句求和除数

2024-04-26 01:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我是初学者。我试着求一个数的所有除数之和,除了这个数本身。我没有使用“elif”编写代码

def sum_divisors(n):
sum = 0
divisor = 1

while divisor < n:
    if n == 0:
        return 0
    else:
        n % divisor == 0
        sum += divisor
        divisor += 1

return sum

print(sum_divisors(0))
# 0
print(sum_divisors(3))  # Should sum of 1
# 1
print(sum_divisors(36))  # Should sum of 1+2+3+4+6+9+12+18
# 55
print(sum_divisors(102))  # Should be sum of 2+3+6+17+34+51
# 114

我得到了答案0,1630和5151。然后,我使用elif重写了代码。我得到了正确的答案

    def sum_divisors(n):
sum = 0
divisor = 1

while divisor < n:
    if n == 0:
        return 0
    elif n % divisor == 0:
        sum += divisor
        divisor += 1
    else:
        divisor += 1

return sum

print(sum_divisors(0))
print(sum_divisors(3))
print(sum_divisors(36))
print(sum_divisors(102))

在第一次尝试中有一些错误,我感觉到了,但我无法解释。是否与操作顺序有关?有人能解释一下第一个代码的执行过程吗


Tags: of答案代码returnifdefelsedivisor
1条回答
网友
1楼 · 发布于 2024-04-26 01:28:19

您声明了一个不使用n % divisor == 0的语句,在第二个代码块中它是一个elif语句。这就是为什么第一个代码不起作用的原因-您已经检查了它是否为True,但没有添加elif语句以及应该在那里执行什么

相关问题 更多 >