2013-11-27 382 views
1

我開始用Python進行冒險。我當前的程序非常簡單,它必須使用Leibnitz公式計算pi,並且在「a」varibale的模塊小於x時停止工作。到目前爲止,它看起來像這樣:計算py中的pi - 萊布尼茲

from math import fabs 
from math import pi 

x=float(input('Enter accuracy of calculating:')) 
sum=0 
a=0 
n=0 

while True: 
    a=float(((-1)**n)/(2*n+1)) 
    sum+=a 
    n+=1 
    result=sum*4 

    if fabs(a)<x: 
     break 

print('Calculated pi:',result) 
print('Imported pi:', pi) 

它看起來不錯,但這裏的問題: 在我的版本Geanie它的偉大工程,但我的朋友的Geanie - 它計算0.0。 另外,在Ideone.com上(沒有鍵盤輸入,例如x = 0.0001),它也返回0.0。

有誰知道問題在哪裏?

回答

3

試試這個

a=((-1)**n)/float(2*n+1) 

,而不是這個

a=float(((-1)**n)/(2*n+1)) 

原因:我沒有看到一個點,在分割設定a自己是一個浮動,但設置除數或股息產生a將確保Python不會削減剩餘部分(這是Python 3.0之前的整數除法的默認值)。

問題:你的風格與official Python style guidelines不符,所以你可能想改變它。

+0

非常感謝,它現在完美。我沒有想過關於切割剩餘的Python ...... 並且感謝關於Python風格的提示,我將就此着手。 ;) – Szczepenson

+0

對不起,雙重評論,但我不能在5分鐘後編輯任何東西...所以,這是上面評論的帖子腳本: 如果我測試'e ^( - 06)'號碼的程序,它會對待它像字符串,並不能將其轉換爲浮點數...任何想法如何輸入指數值沒有任何問題? – Szczepenson

+0

Python中指數的符號是​​*,而不是^。你懂的! :)你能更清楚地知道什麼沒有被轉換成浮點數 - 你能寫出代碼嗎? – dbliss