用列表生成式和numpy技术求解数列前n项之和

今天的练习题如下,请编写Python程序完成下题:
编写一个函数,当用户输入为偶数时,调用函数求1/2+1/4+…+1/n,当输入为奇数时,调用函数1/1+1/3+…+1/n
用for循环+if语句编写可能会比较啰嗦,所以这里使用了列表生成式来写这个函数,这样看起来会紧凑一点。
注意需要使用math函数才能引用ceil方法。

import numpy as np
import math
def excercise0224(input_int):
	times = math.ceil(input_int/2)
	if input_int%2 :
		series = [ 1/(2*i-1) for i in range(1,times+1) ]
	else :
		series = [ 1/(2*i) for i in range(1,times+1) ]
	return series

def get_string(input_int):
	times = math.ceil(input_int/2)
	sum_str = ""
	if input_int%2 :
		for i in range(1,times):
			sum_str += "1/"+str(2*i-1)+' + '
		sum_str += "1/"+str(2*times-1) + ' = '
	else :
		for i in range(1,times):
			sum_str += "1/"+str(2*i)+' + '
		sum_str += "1/"+str(2*times) + ' = '
	return sum_str

def solution0224(input_int):
	print(get_string(input_int),np.array(excercise0224(input_int)).sum())

solution0224(7)
solution0224(8)

输出的结果如下:

1/1 + 1/3 + 1/5 + 1/7 =  1.676190476190476
1/2 + 1/4 + 1/6 + 1/8 =  1.0416666666666665
[Finished in 1.4s]
发布了170 篇原创文章 · 获赞 9 · 访问量 4546

猜你喜欢

转载自blog.csdn.net/weixin_41855010/article/details/104482233