首页 > 解决方案 > 为什么我的 for 循环不工作,但我的 while 循环是?

问题描述

[提前抱歉,我对编程很陌生。]

这是针对项目欧拉问题#2。目标是计算所有不超过 400 万的偶数斐波那契数的总和。对于不熟悉斐波那契数的人来说,斐波那契数只是一个数字,它是序列中前两个数字的总和。例如,前几个斐波那契数是 1,2,3,5,8,13,21,34 ...

下面是我的代码,从一些变量开始,然后是我的 while 循环,最后是我的 for 循环。

n = 0
n2 = 1
fibsum = 0
fibrange = range(1,4000001)

while (n2 <= 4000000):
    n2 = n2 + n
    n = n2 - n
    if n2 % 2 == 0:
        fibsum += n2
print (fibsum)


# for n2 in fibrange:
#     n2 = n2 + n
#     n = n2 - n
#     if n2 % 2 == 0:
#         fibsum += n2
# print(fibsum)

正如我所说,我的 while 循环就像一个魅力,但是当我运行 for 循环时,fibsum 的输出是 0。所以这个值根本没有改变。

我试过range (1, 4000001)代替fibrange. 我真的不知道还能尝试什么。这就像我的第 4 个或第 5 个程序。

标签: python-3.xfor-loopwhile-loop

解决方案


在函数中使用for循环,变量的值仅根据函数变化。使用函数时不能手动更改循环中的变量。rangen2rangeforrange


推荐阅读