Python練習題 019 求分數序列之和

2022-03-26 15:33:11 字數 947 閱讀 8949

【python練習題 019】有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。

這題似乎也不難,規律是:後乙個分數的分子=前乙個分數的分子+分母,後乙個分數的分母=前乙個分數的分子,迴圈個20次就有結果。注意,假設分子為a,分母為b,雖然 a = a + b,但此時a已經變成 a+b 了,所以再給b重新賦值的時候,得是 (a+b)-b 才能等於原分母b,所以重新賦值時就得寫成 a-b。**如下:

sum = 0

a, b = 2, 1

for i in range(20):

sum = sum + a/b

a = a + b

b = a - b

print(sum)

輸出結果如下:

32.66026079864164

不過,話說原題用的是分數,經過這麼一計算,成了浮點數,精度上會不會有問題呢?想來想去,還是保持分數的形式比較精確吧…… 一查,發現計算分數時得 from fractions import fraction 才能用。**如下:

from fractions import fraction

sum = 0

a, b = 2, 1

for i in range(20):

sum = sum + fraction(a/b)

a = a + b

b = a - b

print(sum)

輸出結果如下:

73544369181292861/2251799813685248

這個分數也夠恐怖的!放到idle裡計算一下,結果跟上面的浮點數一模一樣。好吧……

題目出處:程式語言入門經典100例【python版】

python書中練習題 python練習題

1 定義乙個空列表,接收從鍵盤輸入的整數,把列表傳給乙個從大到小排序的函式,再輸出排序後的列表的值 listex b 0 a int input 請輸入列表長度 while b a num int input 請輸入字元 b 1 print listex sum 0 for i in range 0...

python的練習題 Python練習題

1 使用while迴圈輸入1 2 3 4 5 6 8 9 10 i 0while i 10 i i 1 if i 7 continue print i 結果 e python python python test.py1 2 求1 100的所有數的和 i 0sum 0 while i 100 i 1...

練習題目 分數字

童年的我們,對各種事物充滿了好奇與嚮往。這天,小朋友們對數字產生了興趣,並且想和數字交朋友。可是,怎麼分配這些數字才能使得每個小朋友都唯一地找到乙個數字朋友呢?小朋友說 咱們按自己名字的字典序先後,依次選擇乙個剩餘的最小的數字當朋友。好麼?小朋友十分贊同。於是,大家都同意了。第一行為乙個數n,為小朋...