为什么以下代码中的while循环不起作用?

时间:2018-05-14 13:25:51

标签: python

a = 0
suma = 0

while( a <= 1000):
    if (a%3 == 0 or a%5 == 0):
        suma = suma + a
        a = a + 1

print("The final answer is: %s " % suma)

问题:  找到所有3或5的倍数之和,直到1000。

我知道如何通过使用for循环解决这个问题,我想知道的是,为什么,当我运行这个代码时,它永远不会显示输出像一个永无止境的代码语句。我只是想通过while循环知道如何做到这一点。感谢您的反馈:D

4 个答案:

答案 0 :(得分:5)

你应该增加a的值,无论它是3还是5的倍数

while( a <= 1000):
    if (a%3 == 0 or a%5 == 0):
        suma = suma + a
    a = a + 1

目前,它永远不会超过a = 1,因为1既不是3的倍数也不是5的倍数,因此它永远不会增加

答案 1 :(得分:1)

嗯,这是因为你的循环永远不会增加。

答案 2 :(得分:0)

您需要将增量行移出if语句。

答案 3 :(得分:0)

这不是非常Python风格。请尝试改为:

sum_a = 0

for a in xrange(1001):
    if a%3 == 0 or a%5 == 0:
        sum_a += a

print("The final answer is: {}".format(str(sum_a)))

xrange(1001)将在a的每次迭代中生成值。这比改变每次互动更有效,更快捷。

这种方式往往更清晰,并且可以避免很多错误。