首页 > 解决方案 > Python 工作簿:练习 69 - 近似 pi

问题描述

我是 Python 的新手,目前正在编写 Ben Stephenson 的 Python Workbook。我坚持练习 69 并且我的 pi 值正在发散……有人可以帮忙吗?我的代码有任何错误吗?

我还在这里附上了练习题。练习题

#Exercise 69: Approximate pi

maxrun = 15
denominator1 = 2
denominator2 = 3
denominator3 = 4
fractionpos = (4/(denominator1*denominator2*denominator3))
denominatora = 4
denominatorb = 5
denominatorc = 6
fractionneg = -4/(denominatora*denominatorb*denominatorc)

pi = 3
count = 1

while maxrun != 0:
    if count %2 != 0:   #odd runs are positive
        pi = pi+fractionpos
        print('Approximation',count,'pi value is',pi)
        count = count+1
        denominator1 = denominator1+4
        denominator2 = denominator2+4
        denominator3 = denominator3+4
        maxrun = maxrun-1
    elif count %2 ==0:    #even runs are negative
        pi = pi+fractionneg
        print('Approximation',count,'pi value',pi)
        count = count+1
        denominatora = denominator1+4
        denominatorb = denominator2+4
        denominatorc = denominator3+4
        maxrun = maxrun-1

标签: pythonpi

解决方案


这段代码有两个问题。

首先,当你做分数的负部分时,你应该在分母 a、b、c 上加 4 而不是 1、2、3。

第二,fractionposfractionneg计算一次。您需要在每次迭代时重新计算它们。

此外,如果您只在每个循环中添加两个,您可以摆脱分母a、b、c 并只使用 1、2、3 来表示两者。如果你想要更多的挑战,你可以用一个分母变量而不是三个

由于您正在学习 Python,而这对您来说是一个练习,我建议您不要只是复制下面的代码,而是自己进行更改。玩得开心!

    if count %2 != 0:   #odd runs are positive
        pi = pi+(4/(denominator1*denominator2*denominator3))
        print('Approximation',count,'pi value is',pi)
        count = count+1
        denominator1 = denominator1+4
        denominator2 = denominator2+4
        denominator3 = denominator3+4
        maxrun = maxrun-1
    elif count %2 ==0:    #even runs are negative
        pi = pi+-4/(denominatora*denominatorb*denominatorc)
        print('Approximation',count,'pi value',pi)
        count = count+1
        denominatora = denominatora+4
        denominatorb = denominatora+4
        denominatorc = denominatora+4
        maxrun = maxrun-1

推荐阅读