这是我的第一个编程课,本周我们研究了while循环。我们有一个功课示例试图编写立方根。这是我到目前为止,但我无法让我的代码实际运行该程序。我没有收到任何错误。有什么我想念的吗?
def cbrt(nub):
loopn=1
x0=1
loplT=1000
exTol=0.000001
while loopn<=loplT:
x=(1/3)+((2*x0)+(num/x0*x0))
if abs(x - x0)< exTol:
return x
else:
x0 = x
loopn = loopn + 1
return False
print(cbrt(8))
答案 0 :(得分:2)
你在内部调用函数但不在外部,因此函数永远不会运行。您需要在函数外部添加一行来调用它。你也不应该在你的循环中返回False:
def cbrt(num): # changed from nub to num
loopn=1
x0=1
loplT=1000
exTol=0.000001
while loopn<=loplT:
x = (2. * x0 + num/(x0*x0)) / 3.0 # fixed estimation method
if abs(x - x0)< exTol:
return x
else:
x0 = x
loopn = loopn + 1
return False # return false outside loop
print(cbrt(8)) # call function outside of function
答案 1 :(得分:2)
def cbrt(num): # not nub
loopn=1
x0=1
loplT=1000
exTol=0.000001
while loopn<=loplT:
x=(1/3)+((2*x0)+(num/x0*x0)) # this estimation method is wrong!
# I think you want `(1/3)_*_ ((2*old_est)+num/(old_est*old_est))
# notice parenthesis and multiplies instead of adds 1/3 ... also make sure you are using python 3 or 1/3 will always equal zero...
if abs(x - x0)< exTol:
return x
else:
x0 = x
loopn = loopn + 1
return False # dont return False inside your loop ...
print(cbrt(8))
你去...在蟒蛇皮中吟唱WHITESPACE非常重要!!!