【发布时间】:2017-10-04 19:04:24
【问题描述】:
我不知道为什么下面的代码有无限循环。谢谢你告诉我和回答!
cube = 25
epision = 0.01
guess = 0
increment = 0.01
while abs(guess**3 - cube) >= epision:
guess += increment
if abs(guess**3 - cube) >= epision:
print("Failed on cube root of", cube)
else:
print (guess, 'is close to the cube root of',cube)
【问题讨论】:
-
if永远不会是真的,因为如果是的话,循环会重复。 -
你为什么希望循环永远结束?
-
考虑
guess**3 - cube。猜测从 0 开始,所以它是 -25。然后它变成 1,它是 -24。然后它变成 2,它是 -17。然后它变成 3,它是 2。从那时起,差异总是正的,并且随着每次迭代而变得更大。问题在于,将 1 加到guess 会开始将其从期望值移得更远,而不是更近。这不是真正的 Python 问题,而是算法问题。