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项之和