我是初学者。我试着求一个数的所有除数之和,除了这个数本身。我没有使用“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))
在第一次尝试中有一些错误,我感觉到了,但我无法解释。是否与操作顺序有关?有人能解释一下第一个代码的执行过程吗
您声明了一个不使用
n % divisor == 0
的语句,在第二个代码块中它是一个elif
语句。这就是为什么第一个代码不起作用的原因-您已经检查了它是否为True
,但没有添加elif
语句以及应该在那里执行什么相关问题 更多 >
编程相关推荐