Python - while 循环的结果与用户定义函数中的结果不同

Python - Different result from while loop than when in a user defined function

我正在尝试创建一个代码,returns 给出用户将给出的 n 次迭代的 pi 的近似值。 n越大越准确

我创建了一个 while 循环来执行此操作,它工作正常:

import math

x = 1
k = 0
n = int(input("Enter n:"))
while x <= n:
    k=k+(1/x**2) # summation of 1/k**2 for every n times
    y=k*6 # multiply k by 6 like in formula
    fin = math.sqrt(y) # find sqrt of y like in the formula
    x += 1

print(fin)

但现在我想把它变成一个函数。这就是我想出的:

import math

def pi(n):
    x = 1
    k = 0
    #n = int(input("Enter n:"))
    while x <= n:
        k=k+(1/x**2) # summation of 1/k**2 for every n times
        y=k*6 # multiply k by 6 like in formula
        fin = math.sqrt(y) # find sqrt of y like in the formula
        x += 1
        return fin

g=pi(int(input("Enter n:")))
print(g)

出于某种原因,我得到了不同的答案...为什么当我使用该函数时答案变得不准确?

你有你的 return 在循环中,因此 while 中的块只执行一次并且永远不会计算其余的近似值,把你的 return 超出你的周期:

while x <= n:
    k=k+(1/x**2) # summation of 1/k**2 for every n times
    y=k*6 # multiply k by 6 like in formula
    fin = math.sqrt(y) # find sqrt of y like in the formula
    x += 1
return fin

我测试了它,现在 return两种方法的结果相同。

祝你有美好的一天! :D