我是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