gpt4 book ai didi

Python:在 "If"循环中嵌套 "while"语句?

转载 作者:太空宇宙 更新时间:2023-11-03 13:13:13 26 4
gpt4 key购买 nike

我是 Python 的新手,这就是为什么我在解决其他人可能会觉得容易的问题时遇到了麻烦。

此问题的背景:Euler Project,问题 2。此问题本质上要求我们将斐波那契数列中的所有偶数项相加,使得每个项都在 4,000,000 以下。我决定通过从封闭公式计算第 n 个斐波那契项来解决与许多在线解决方案略有不同的问题。现在,假设此函数称为 Fibonacci(n).

我基本上想做的是遍历未知数量的整数,这些整数表示斐波那契集的索引(即 1、2、3、4 等),并将每个值插入 Fibonacci(n)。 如果结果除以 2 没有余数,则将此 Fibonacci 数添加到某个初始设置为 0 的值。

这是我目前所拥有的:

def Fibonacci(n): 
return (1/(5**0.5))*((((1+5**0.5)/2)**n)-(((1-5**0.5)/2)**n))

i=0
FibSum = 0
nFib = 0

while (nFib <= 10):

nFib = Fibonacci(i)

if(nFib%2==0):
FibSum += nFib

i += 1

print FibSum

(是的,如您所见,我将斐波那契数列限制在 10 而不是 4,000,000;这样做只是为了测试。)

现在,这是我的问题:当我运行这段代码时,我得到的是 2.0 而不是 10.0(2 和 8 是应该加在一起的两个斐波那契数)。

怎么会?我的猜测是循环在到达第三个斐波那契数 (2) 后停止并且不会继续超出该数。有人看到我的代码有问题吗?

如有任何问题,请发表评论。提前致谢。

最佳答案

Gal Dreiman 提供的解决方案很好,但是用 in 函数转换更好,下面是您修改后的代码:

def Fibonacci(n):
return int((1/(5**0.5))*((((1+5**0.5)/2)**n)-(((1-5**0.5)/2)**n)))

关于Python:在 "If"循环中嵌套 "while"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38069471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com