用Python计算Pi的莱布尼兹公式

我正在尝试重新创建我用Lua制作的一个程序。我一直在试图将它翻译成Python(3.5.0)

该程序旨在允许用户输入一定数量的迭代次数,然后程序会遍历它们并显示pi的值。

因此,让我们假设用户输入1个迭代,程序将通过公式(如图所示)并进行数学计算。前几次迭代将是pi = 4/1,这将使pi的值等于4。这里是一些迭代和它们的pi值的列表:[迭代和Pi的列表](https://i.stack.imgur.com/vZd2K.jpg)。

此外,如果您想查看我使用Lua的代码,这是两个链接[简单的Pi估计程序](http://pastebin.com/usDAi4pu)和我还有另一个更复杂的,但它不会在Python中起作用。另一个例子,如果用户输入5个迭代,则该程序将计算pi的值为3.339。

正如我所说的,我已经尝试在Python中制作它,但我做不到。任何建议将不胜感激。这是我写的内容(它绝对错误):

def estimate_pi( iterations, pi = 0 ):
    print("How many iterations?")
    iterations = input()
    sign = -1.0
    for n in range(iterations):
        sign = sign*-1 # alternate sign as 1 or -1
        pi = pi+4/(n*2-1)*sign # multiply by sign for a + or - answer
        print("Pi: ", pi) #print value of Pi
    return;
点赞
用户5108418
用户5108418

你的程序并没有那么错。你忽略了 Python 的 range 会从 0..n-1 开始。已修正并改进:

def estimate_pi( iterations ):
    sign,pi = 1,0.0
    for n in range(iterations):
        pi += 4/(n*2+1)*sign # 乘以符号以得到正负答案
        # --- 在上一行公式中 +1 被替换为 -1
        sign *= -1 # 交替使用 1-1 作为符号
    return pi

print("迭代次数?")
print(estimate_pi(int(input())))
2015-12-09 00:46:06