gpt4 book ai didi

python - 我在我的电脑上尝试过,它工作正常,但在 pyschools 网站上仍然显示 "float division by zero "。为什么 ?? :

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:20 24 4
gpt4 key购买 nike

请在下面的链接中找到问题的描述: EOF while parsing at the end of my code ;estimatePi() problem from pyschools

编写一个函数estimatePi(),根据印度数学家 Srinivasa Ramanujan 发现的公式来估计并返回 pi 的值。它应该使用 while 循环来计算求和项,直到最后一项小于 1e -15。距离计算公式如下:

enter image description here

import math
def estimatePi():
k=0
x=0
sum1=0
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
while x<1/1000000000000000 :
x=(factorial((4*k))*(1103+26390*k))/(factorial(k)**4*396**(4*k))
sum1+=x
k+=1
return 9801/(2*math.sqrt(2)*sum1 )
print(estimatePi())

最佳答案

一些注意事项:

  • 在 Python2 中,1/1000000000000000正是0由于整数除法,因此 while 循环永远不会运行,sum1停留在09801/(2*math.sqrt(2)*sum1)除以 0 失败。您可以将其替换为 1E-15 .

  • 您从 x = 0 开始但一旦你计算x ,它变得大于 1E-15所以while循环只运行一次。您可以设置x1并运行 while循环只要 x 大于 1E-15

  • pi定义于 math所以你可能不应该导入 math 。您可以简单地使用 **0.5而不是sqrt .

  • (factorial((4*k))*(1103+26390*k))/(factorial(k)**4*396**(4*k))返回0在Python2中对于任何k大于 1。您应该使用浮点除法。

这是一个修改后的代码,应该可以在 Python2 和 Python3 上正常工作:

def estimatePi():
k = 0
x = 1
sum1 = 0

def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
while x > 1E-15:
x = float(factorial(4*k)*(1103+26390*k)) / (factorial(k)**4*396**(4*k))
sum1 += x
k += 1
return 9801/(2*2**0.5*sum1)


print(estimatePi())
# 3.141592653589793 in Python3
# 3.14159265359 in Python2

关于python - 我在我的电脑上尝试过,它工作正常,但在 pyschools 网站上仍然显示 "float division by zero "。为什么 ?? :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53756163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com