Python公式估算圆周率的值

Python入门都好难!提问:

img


四舍五入?自己编程发现只能求一个近似值

1. 判断输入值是不是偶数整数;

2. 通过观察沃利斯公式可以得到规律:

2.1 奇数位的值是 (奇数位 + 1)/奇数位
2.2 偶数位的值是 偶数位/(偶数位 + 1)

3. 注意上边计算的pi/2的结果,所以需要将第二步的结果*2

4. 使用 round 函数四舍五入保留12位


# 估算圆周率

def get_pi(num = 1000):
  if num % 2 != 0:
    return "请输入偶数整数!"
  pi = 1
  for value in range(1, num + 1):
    if value % 2 == 0:
      pi *= value / (value + 1)
    else:
      pi *= (value + 1) / value
  return round(pi * 2,12)

if __name__ == "__main__":
  pi = get_pi(1000)
  print("1000 pi", pi)
  pi = get_pi(100000)
  print("100000 pi", pi)

img

def get_pi(n):
    half = 1
    for i in range(n):
        p = (i//2 + 1) * 2
        q = p + 2*(i%2) - 1
        half *= p/q
    return half * 2

get_pi(1000)
3.140023818600586