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



我正在尝试创建一个代码,该代码在给定用户将给出的n次迭代的情况下返回圆周率的近似值。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)

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

您在循环中有返回,因此循环中的块只执行一次,其余的近似值永远不会计算,请将您的返回值排除在循环之外:

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

我对它进行了测试,现在两种方法都返回了相同的结果。

祝你今天愉快!:D

最新更新