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