def Pi(n):
list=[lambda x:1/(4*x+1),lambda y:(-1)/(4*(y+1)-1)]
sum = 0
for x in range(n):
pi1=list[0](x)
pi2=list[1](x)
sum =sum+pi1+pi2
#print(pi1,pi2)
return sum
print(Pi(1000000)*4)
1.写的初版代码如下,代码有很多问题,结果不能运行
def Pi(n):
list=[lambda x:1/(4*x+1),lambda y:(-1)/(4*y-1)]
for x in range(n):
pil =list[0]
for y in range (n):
pi2 =list[1]
return pil+pi2
print(Pi(10))
2.修改过程见注释#
def Pi(n):
list=[lambda x:1/(4*x+1),lambda y:(-1)/(4*(y+1)-1)] #使用lambda函数建立列表,注意第二个是(y+1),如果是y则结果多一个1
sum = 0 #给sum一个初始值
for x in range(n): #x,y的取值范围相同
pi1=list[0](x) #将x的值代入数列
pi2=list[1](x)
sum =sum+pi1+pi2
#print(pi1,pi2) #可以先输出pi1,pi2的值,检查是否有误
return sum
print(Pi(1000000)*4) # n的取值越大求出的Π越接近