菜鸟IT的博客 >> Python
实战100例 - 第24例 - 求20个分数之和。
# -*- coding:utf-8 -*-
# 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
# 找规律:第2个分数的分子是前面1个分数的(分子+分母)之和
from functools import reduce
# 分子初始值:FenZi=2
FenZi=2
# 分母初始值:FenMu=1
FenMu=1
FenShu=FenZi/FenMu
FenShuList=[]
# 思路,根据规律,把数字都丢到空的列表里,
# 然后求这个列表里的数字之和
for i in range(1,20+1):
# FenShuList.append(FenShu)
if(i==1):
FenZi=2
FenMu=1
print("第"+str(i)+"个分数:"+str(FenZi)+"/"+str(FenMu))
elif(i>1):
FenZi=FenZi+FenMu
FenMu=FenZi-FenMu
FenShuList.append(FenZi/FenMu)
print("第" + str(i) + "个分数:" + str(FenZi) + "/" + str(FenMu))
print("20个分数全部在这里:",FenShuList)
# 20个分数之和
FenShuListZhiHe=reduce(lambda x,y:x+y,FenShuList)
print("20个分数之和:",FenShuListZhiHe)
————————————
输出结果:
第1个分数:2/1
第2个分数:3/2
第3个分数:5/3
第4个分数:8/5
第5个分数:13/8
第6个分数:21/13
第7个分数:34/21
第8个分数:55/34
第9个分数:89/55
第10个分数:144/89
第11个分数:233/144
第12个分数:377/233
第13个分数:610/377
第14个分数:987/610
第15个分数:1597/987
第16个分数:2584/1597
第17个分数:4181/2584
第18个分数:6765/4181
第19个分数:10946/6765
第20个分数:17711/10946
20个分数全部在这里: [1.5, 1.6666666666666667, 1.6, 1.625, 1.6153846153846154, 1.619047619047619, 1.6176470588235294, 1.6181818181818182, 1.6179775280898876, 1.6180555555555556, 1.6180257510729614, 1.6180371352785146, 1.618032786885246, 1.618034447821682, 1.6180338134001253, 1.618034055727554, 1.6180339631667064, 1.6180339985218033, 1.618033985017358]
20个分数之和: 30.66026079864164
进程已结束,退出代码0
菜鸟IT博客[2022.01.23-17:38] 访问:311