1 #题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

代码:

  2 lim = [2]  3 lin = [1]  4 for x in range(19):  5     lim.append(lim[x] + lin[x])  6     lin.append(lim[x])  7 print(lim)  8 print(lin)  9 print(len(lim)) 10  11 i = 0 12 s = 0 13 while i < 20: 14     s += lim[i]/lin[i] 15     i += 1 16 print('这个数列的前20项之和是%.20f'%s)

运行结果:

[root@HK code_100]# python code_24.py [2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711][1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946]20这个数列的前20项之和是32.66026079864163733646[root@HK code_100]#

代码解释:

  2 lim = [2]                        #初始化分子列表第一个元素  3 lin = [1]                        #初始化分母列表第一个元素  4 for x in range(19):              #除去下标为0的第一个元素,循环19次  5     lim.append(lim[x] + lin[x])  #按照数字规律,计算分子列表的每一项,添加到lim列表中  6     lin.append(lim[x])           #按照数字规律,计算分母列表的每一项,添加到lin列表中  7 print(lim)                       #打印列表lim,供参考  8 print(lin)                       #打印列表lin,供参考  9 print(len(lim))                  #打印列表长度,供参考 10  11 i = 0                            #初始化while判断参数 12 s = 0                            #累加之和初始赋值为0 13 while i < 20:                    #定义while判断条件,累加20次 14     s += lim[i]/lin[i]           #累加两个列表相应位置除法的值 15     i += 1                       #i循环加1,触发while判断条件 16 print('这个数列的前20项之和是%.20f'%s)    #小数点后20保留20位,格式化输出前20项之和