我是Python的新手,这就是为什么我在其他人可能会觉得容易的问题上遇到麻烦。Python:在“while”循环中嵌套“If”语句?
这个问题的背景:欧拉项目,问题2.这个问题基本上要求我们在Fibonacci序列中添加所有偶数项,只要每项不超过400万。我决定通过从一个封闭的公式计算第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)之后停止,并且不会继续。有人看到我的代码有问题吗?
如果您还有其他问题,请发表评论。提前致谢。
只是一个风格和完全不相关的笔记,但你不需要''while'和'if'语句中条件的括号。做例如'而nFib <= 10:'没问题。 –
这是因为你使用浮点数学,你得到〜* 8.000000000000002 *而不是8。 –
应该通过做nFib = int(斐波那契(i)) – ShadowFlame