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
我正在尝试创建一个代码,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