考点:
函数参数传参、求和、奇数、偶数、输入输出、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
解题思路:
本节源代码
# -*- coding: utf-8 -*-
"""
@File文件 : ljytest75
@Time创建时间 : 2021/11/25
@Author作者 : 刘金玉
@Contact联系方式 : selidev@qq.com 编程创造城市 http://bcczcs.com
注:作者信息请保留!否则必究法律责任!
刘金玉编程,编程创造城市!
作者微信号:selidev
作者抖音号:selidev
作者B站:刘金玉编程
微信公众号:编程创造城市
题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/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语言精简的初衷。