python-3.x - 为什么我的 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 个程序。
解决方案
在函数中使用for
循环,变量的值仅根据函数变化。使用函数时不能手动更改循环中的变量。range
n2
range
for
range
推荐阅读
- java - http 出站网关的 URL 中的路径参数
- r - 如何正确重写 R Shiny 的函数 icon() 以包含 Font-Awesome Pro 图标?
- tcl - 使用 tcl/tk 的临时目录
- java - 如何定义自定义组合谓词?
- reactjs - Material-ui Snackbar 弹出屏幕
- database - SOLR 中的数据导入
- asp.net-core - ASP.NET Core 3.1 OData:无法按 Id 选择实体
- java - 如何在 Spring Webflux 中获取引荐来源网址?
- python - Qt设计师如何设置风格?
- regex - 用于检查地址门牌号的正则表达式