Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python计算Pi的莱布尼兹公式_Python_Lua - Fatal编程技术网

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

用Python计算Pi的莱布尼兹公式,python,lua,Python,Lua,我正在尝试重新创建我在Lua制作的程序。我一直在尝试将其转换为Python(3.5.0) 该程序的目的是允许用户输入一定数量的迭代,然后程序通过这些迭代并显示pi值 假设用户输入1的迭代,程序通过公式(如图所示)进行计算。第一次迭代将是pi=4/1,这将使pi的值为4。以下是一些迭代及其pi值的列表: 另外,如果您想看到我使用Lua的代码,这里有两个链接,我还有另一个更复杂的链接,但它在Python中不起作用。另一个例子是,如果用户输入5的迭代,程序将计算pi的值为3.339 正如我所说,我试

我正在尝试重新创建我在Lua制作的程序。我一直在尝试将其转换为Python(3.5.0)

该程序的目的是允许用户输入一定数量的迭代,然后程序通过这些迭代并显示pi值

假设用户输入1的迭代,程序通过公式(如图所示)进行计算。第一次迭代将是pi=4/1,这将使pi的值为4。以下是一些迭代及其pi值的列表:

另外,如果您想看到我使用Lua的代码,这里有两个链接,我还有另一个更复杂的链接,但它在Python中不起作用。另一个例子是,如果用户输入5的迭代,程序将计算pi的值为3.339

正如我所说,我试图用Python实现它,但我就是做不到。任何建议都将不胜感激。以下是我所写的内容(完全错误):

你的程序没有错。您缺少python的范围是
0..n-1
。固定和改进:

def estimate_pi( iterations ):
    sign,pi = 1,0.0
    for n in range(iterations):
        pi += 4/(n*2+1)*sign # multiply by sign for a + or - answer
        # --- prev line's formula has +1 instead of -1
        sign *= -1 # alternate sign as 1 or -1
    return pi

print("How many iterations?")
print(estimate_pi(int(input())))

公式如下:您确定您正在运行Python 3.5.0吗?该代码在3.5中不应该工作。[这不是你的代码的问题,但是
input
在3.5中返回一个字符串,因此
range(iterations)
不应该工作。]但是请注意,莱布尼茨的公式收敛速度非常慢:我想你也错过了
0..n-1
部分:)它不是
range(0,iterations+1)吗
使用与OP?Hege相同的符号,当我使用该代码时,1的迭代工作正常,但其他的则不行。我输入了2,它给了我5.33。。。但它应该给我2.66…这是5.33的一半…你输入了
符号*=1
。它应该可以正确地使用符号*=-1将符号*=1更改为符号*=-1,现在执行下一次迭代。当我输入0时,它显示4.0(应该是1的迭代)。当我输入1时,它显示2.66(应该是2的迭代),诸如此类。你们都是对的,我犯了一个错误,没有运行程序
def estimate_pi( iterations ):
    sign,pi = 1,0.0
    for n in range(iterations):
        pi += 4/(n*2+1)*sign # multiply by sign for a + or - answer
        # --- prev line's formula has +1 instead of -1
        sign *= -1 # alternate sign as 1 or -1
    return pi

print("How many iterations?")
print(estimate_pi(int(input())))