1.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
Python练习 (20200317)
1.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
1 # 方法一:函数定义
2 def func(x):
3 if x%2 == 0: # 偶数
4 sum = 0
5 li = range(2,x+1,2) # 生成2到x的偶数列表
6 for i in li: # 对列表中每一个元素操作
7 sum += 1/i
8 return sum
9 else: # 奇数
10 sum = 0
11 li = range(1,x+1,2) # 生成1到x的奇数列表
12 for i in li: # 对列表中的每一个元素操作
13 sum += 1/i
14 return sum
15 n = int(input('输入数字:'))
16 print(func(n))
17 # 输出
18 # =>输入数字:20
19 # =>1.4644841269841269
20 # 方法二:高阶函数调用
21 from functools import reduce # 导入reduce
22 def function(x): # 定义函数()根据给定的参数是否是奇偶数生成不同的列表
23 if x%2 == 0:
24 li = list(range(2,x+1,2)) # 生成偶数列表
25 return li
26 else:
27 li = list(range(1,x+1,2)) # 生成奇数列表
28 return li
29 def res(func,y): # 定义运行函数
30 daoshu = list(map(lambda x:1/x,func(y))) # 使用map函数
31 result = reduce(lambda x,y:x+y,daoshu) # 使用reduce函数
32 return result
33 n = int(input('输入数字:'))
34 print(res(function,n))
35 # 输出
36 # =>输入数字:19
37 # =>2.1332555301595546