考点:
函数参数传参、求和、奇数、偶数、输入输出、range步长灵活使用【Python习题04】
题目:
编写一个函数,
输入n为偶数时,
调用函数求1/2+1/4+...+1/n,
当输入n为奇数时,
调用函数1/1+1/3+...+1/n
程序输入效果:
请输入一个数n:6
0.9166666666666666
请输入一个数n:6
处理偶数情况
0.9166666666666666
解题思路:
- 使用输入函数input为一个整数n赋值,这里注意要转换数据类型
- 单独为奇数和偶数情况写一个函数来求和,但实际上思路是差不多的。建议可以使用range的步长特点就可以把规律做出来。
- 也可以自己通过循环方式把求和做出来,就如同本题第一种方法一样。这里注意的是变量定义的巧妙运用。
- python中的函数可以直接通过参数的形式传参,但是要在新的函数中定义一个传过来的参数要来处理成函数的形式一样去调用。例如本题第二种方法:fp(n)
本节源代码
# 第一种方法,这里建议可以按照题意去将奇偶数不同情况放到不同函数中 def mycalc(n): fenmu = 2 if n % 2 == 0 else 1 sum = 0 while fenmu <= n: sum += 1 / fenmu fenmu += 2 return sum n = int(input("请输入一个数n:")) while n < 1: n = int(input("请输入一个数n:")) print(mycalc(n)) # 第二种方法 #奇数 def fodd(n): print("处理奇数情况") s=0 for i in range(1,n+1,2): s+=1/i return s #偶数 def feven(n): print("处理偶数情况") s=0 for i in range(2,n+1,2): s+=1/i return s def fcall(fp,n): return fp(n) if __name__ == '__main__': n=int(input("请输入一个数n:")) if n%2==0: print(fcall(feven,n)) else: print(fcall(fodd,n))
总结:
这是一题函数映射方式的运用,range函数的巧妙运用。给我们带来的思考是在平时写代码时候,需要灵活使用已经学过的函数,了解已经用过的函数的功能,在写新的程序的时候考虑是否可以使用函数的某些方式来巧妙达到目标,这也是python语言精简的初衷。