网站首页 > 基础教程 正文
任务要求
编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n;当输入n为奇数时,调用函数1/1+1/3+...+1/n,并将结果在控制台打印输出。
任务分析
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
猜你喜欢
- 2025-03-18 如何在 Python 中进行平方:完整指南
- 2025-03-18 怎样让 Python 代码更简洁高效?这些实用技巧别错过!
- 2025-03-18 Python 一行代码帮你节省数小时工作
- 2025-03-18 实战指南:Python 代码优化的常见技巧与思路大集合
- 2025-03-18 如何使用 Python 在 Excel 中创建、更新和删除表格
- 2025-03-18 Python 最大N个数与最小N个数的和
- 2025-03-18 Python高效办公:用自动化脚本批量处理Excel
- 2025-03-18 python基础函数(Python基础函数导入)
- 2025-03-18 Python 函数秘籍(Esoterica of Python Functions)
- 2025-03-18 别再死记硬背!Python函数知识点和练习题都在这里,速来挑战!
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)