i = 0
total = 0
signal = 1
next_one = 1 / (2* i + 1) * signal # 下一项的值
while abs(next_one) > 10 ** (-5): # 当绝对值大于阈值,继续计算
total += next_one
signal *= (-1) # 每项的正负,交替变化
i += 1
next_one = 1 / (2* i + 1) * signal # 预先计算下一项的值
print(total, 3.141675 / 4) # 0.7853931633974454 0.78541875
通过结果可以看到非常相近