1
前段時間我發現這個代碼計算圓周率的數字:不明白爲什麼這個代碼給出不同的結果不同版本的Python
def pi_digits():
"""generator for digits of pi"""
q,r,t,k,n,l = 1,0,1,1,3,3
while True:
if 4*q+r-t < n*t:
yield n
q,r,t,k,n,l = (10*q,10*(r-n*t),t,k,(10*(3*q+r))/t-10*n,l)
else:
q,r,t,k,n,l = (q*k,(2*q+r)*l,t*l,k+1,(q*(7*k+2)+r*l)/(t*l),l+2)
digits = pi_digits()
for i in range(30): print digits.next()
,現在我想在Python 3.4和我使用它做了一個小的變化:
def pi():
'''Generator for digits of pi'''
q,r,t,k,n,l = 1,0,1,1,3,3
while True:
if 4*q+r-t < n*t:
yield n
q,r,t,k,n,l = (10*q,10*(r-n*t),t,k,(10*(3*q+r))/t-10*n,l)
else:
q,r,t,k,n,l = (q*k,(2*q+r)*l,t*l,k+1,(q*(7*k+2)+r*l)/(t*l),l+2)
def main():
a=pi()
i=30
while i>0:
print(next(a))
i-=1
if __name__ == '__main__':
main()
但我的代碼打印錯誤的結果,如:
3.0,
1.0476190476190477,
3.272283272283272,
3.6476767126921925,
4.078229842128079,
4.6365352277262,
5.345159217838377,
6.228740292622248,
7.819098709270982,
4.255764551767985,
5.069552326563916,
6.0642804719748575...
那麼是什麼使區別?
請修復縮進嗎? –