You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何计算π近似值的Python代码输出结果不正确?

问题原因分析

你的代码核心问题是循环次数错误,导致多计算了额外的项:

  • 需求明确n=1对应第一项(结果3),n=2对应前两项(3 + 4/(2×3×4))。
  • 你的代码中,当n>1时,初始approx_pi已经是第一项(3),但循环用了range(1, n+1),会执行n次循环。以n=2为例,循环执行2次,在初始值基础上额外加了2个项,最终计算的是前4项的结果(3 + 4/(2×3×4) −4/(4×5×6)+4/(6×7×8)),这就是你得到3.145238095238095的原因。
  • 另外,代码里的counter变量完全多余,for循环的range已经控制了循环次数,手动修改counter毫无意义。
修正后的代码
def approximate_pi(n):
    approx_pi = 3
    sign = 1
    numb = 2
    # 初始值是第1项,只需循环n-1次添加后续项
    for _ in range(n-1):
        approx_pi += sign * (4 / (numb * (numb+1) * (numb+2)))
        sign *= -1
        numb += 2
    print(approx_pi)

approximate_pi(2)  # 输出3.1666666666666665
验证结果
  • n=1时,循环执行0次,直接输出3,符合需求。
  • n=2时,循环执行1次,加上第一个正分式,结果为3 + 4/(2×3×4) = 3 + 1/6 ≈3.166666667,和预期一致。

内容的提问来源于stack exchange,提问作者thumpy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 00:37:45