我在Python 3.6.0上编写了以下代码,用于在 Spyder 编辑器中查找多维数据集根目录。
#Finding the cube root
#import math
y=input("Enter a number whose cube root you want to find: ")
root=float(y)
#x1=math.pow(root,1/3)
n=input("Enter the degree of accuracy: ")
epsilon=float(n)
x1=root/3.0
while True:
if x1>root and abs(root-x1)<=epsilon:
break
else:
x1=1/3*(2*x1+root/(x1**2))
print("The cube root is", x1)
但是,输出显示&#34; 溢出错误&#34;并且&#34; 结果很大&#34;。然后我介绍了以下 print 语句:
else:
print(x1)
x1=1/3*(2*x1+root/(x1**2))
现在我发现循环无限运行。 print 语句显示已达到正确的答案,但循环从未终止。
任何人都可以告诉我我犯了什么错误以及如何在不改变公式来找到立方根的情况下摆脱它?
答案 0 :(得分:0)
x1如何在代码中变得比root更大?
其次你可能想测试abs(x1 ** 3 -root)&lt; = epsilon 所以试试:
while True:
if abs(x1**3 - root) <= epsilon:
print("The cube root is", x1)
break
else:
x1=1/3*(2*x1+root/(x1**2))