专业编程基础技术教程

网站首页 > 基础教程 正文

Python实现奇偶分数序列求和(python计算奇数偶数和)

ccvgpt 2025-03-18 20:09:37 基础教程 1 ℃

任务要求

编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n;当输入n为奇数时,调用函数1/1+1/3+...+1/n,并将结果在控制台打印输出。

Python实现奇偶分数序列求和(python计算奇数偶数和)

任务分析

1.输入处理:接收正整数n作为输入参数

2.奇偶判断:根据n的奇偶性执行不同计算逻辑

3.精度控制:结果保留四位小数

任务实现

方法一:基础条件判断法

def calculate_sum(n):
n = int(n)
total = 0.0
if n % 2 == 0:
for i in range(2, n + 1, 2):
total += 1 / i
else:
for i in range(1, n + 1, 2):
total += 1 / i
return round(total, 4)
print(calculate_sum(5)) # 输出1.5333
print(calculate_sum(6)) # 输出0.9167

说明:

  • n = int(n)确保处理整型输入
  • 偶数从2开始步进2,奇数从1开始步进2
  • 累加计算时分母转换为浮点数避免整数除法

方法二:列表推导式法

def calculate_sum_short(n):
n = int(n)
seq = range(2, n + 1, 2) if n % 2 == 0 else range(1, n + 1, 2)
return round(sum(1 / i for i in seq), 4)
print(calculate_sum_short(5)) # 输出1.5333
print(calculate_sum_short(6)) # 输出0.9167

说明:

  • 利用三元表达式简化逻辑判断
  • sum()函数直接计算生成器表达式的总和

方法三:数学公式优化法

def calculate_sum_optimized(n):
n = int(n)
k = n//2
if n % 2 == 0:
return round(sum(1/(2*i) for i in range(1, k+1)), 4)
else:
return round(sum(1/(2*i-1) for i in range(1, k+2)), 4)
print(calculate_sum_optimized(5)) # 输出1.5333
print(calculate_sum_optimized(6)) # 输出0.9167

说明:

  • 将序列转换为数学项数表达式(偶数项数k=n/2,奇数项数k=(n+1)/2)
  • 通过项数计算避免生成完整序列

运行结果

1.5333

0.9167

进程已结束,退出代码为 0

最近发表
标签列表