1. Python基础算法实战:从调和级数到泰勒展开
作为一名Python开发者,我经常需要处理各种数学计算问题。最近在整理Python基础练习时,发现几个非常经典的算法题目,它们不仅能够帮助我们理解Python的基本语法,还能深入掌握循环、条件判断等核心编程概念。下面我将详细解析这些题目,并分享一些实际编码中的技巧和注意事项。
1.1 调和级数求和
调和级数是最基础的数学序列之一,定义为Hₙ = 1 + 1/2 + 1/3 + ... + 1/n。在Python中实现这个求和非常简单:
python复制sum = 0
for i in range(1, 101):
sum = sum + 1/i
print('sum=%.6f' % sum)
这里有几个关键点需要注意:
range(1, 101)生成的是1到100的整数序列,因为range的结束值是不包含的- 使用浮点数除法
1/i而不是整数除法1//i %.6f格式化输出保留6位小数
实际编程中,当n很大时,调和级数的求和顺序会影响精度。从大到小相加(即先加小的数)可以减少舍入误差。
1.2 交错调和级数
这是一个带符号变化的调和级数:1 - 1/2 + 1/3 - 1/4 + ... ± 1/n。实现代码如下:
python复制sum = 1
f = -1
for i in range(2, 101):
sum = sum + 1/i * f
f = -f
print('sum=%.6f' % sum)
这个实现使用了一个技巧:
- 初始化符号变量f为-1
- 每次循环后取反f的值
- 这样就能实现正负交替的效果
1.3 三角数倒数求和
这个问题的通项是1/(1+2+...+k),其中分母是三角数。实现时需要先计算分母:
python复制sum = 0
t = 0
for i in range(1, 101):
t = t + i # 计算三角数
sum = 1/t + sum
print('sum=%.6f' % sum)
这里的关键是理解三角数的计算方式。三角数tₙ = 1+2+...+n = n(n+1)/2,但我们选择在循环中累加计算
