智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76
题目:求分数数列和
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
解法1 常规思维
程序分析
1、分析分子与分母的规律
2、下一项的分母是前一项的分子
3、下一项的分子是前一项的分子与分母之和
代码编写
n = int(input("请输入一个数:"))
a = 2.0
b = 1.0
s = 0
for n in range(1,n+1):
s += a / b
t = a
a = a + b
b = t
print("数列前%d项和为:%.2f"%(n,s))
运行结果
请输入一个数:5
数列前5项和为:8.39
解法2 python
程序分析
和解法1一样,知识在交换的时候用了python特有的赋值方式
代码编写
n = int(input("请输入一个数:"))
a = 2
b = 1
s = 0.0
for i in range(1,n+1):
s += a/b
a,b = a+b,a
print("数列前%d项和为:%.2f"%(n,s))
运行结果
请输入一个数:6
数列前6项和为:10.01
解法2 list
程序分析
1、和解法1类似,只是把每一个分数值加入到列表中
2、最后对列表的项求和
代码编写
from functools import reduce
n = int(input("请输入一个数:"))
a = 2
b = 1
lst = []
for i in range(1,n+1):
lst.append(a/b)
a,b = a+b, a
print("数列前%d项和为:%.2f"%(n,reduce(lambda x,y: x + y,lst)))
运行结果
请输入一个数:10
数列前10项和为:16.48
还有更多其他的解法,欢迎一起交流学习
我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址“http://www.gtalent.cn/exam/interview?token=8a33fabdc405d59c90ffca2496195543