关于MIT OCW
Python第3讲,我遇到了问题.
根据简单的数学计算,她使用的代码不应该是成功的.
## EXAMPLE: approximate cube root #################### #cube = 27 ##cube = 8120601 ##cube = 10000 #epsilon = 0.1 #guess = 0.0 #increment = 0.01 #num_guesses = 0 ## look for close enough answer and make sure ## didn't accidentally skip the close enough bound #while abs(guess**3 - cube) >= epsilon and guess <= cube: # guess += increment # num_guesses += 1 #print('num_guesses =',num_guesses) #if abs(guess**3 - cube) >= epsilon: # print('Failed on cube root of',cube,"with these parameters.") #else: # print(guess,'is close to the cube root of',cube)
这是她使用的代码,我遇到的问题是理解这部分:
while abs(guess**3 - cube) >= epsilon and guess <= cube: # guess += increment
如果guess是0.0,cube是27并且increment是0.01那么这个术语的数学应该是:
abs(0**3 - 27) = 27 #----- This is fine according to the code but the next step would be:# abs(27.01**3 - 27) = 19677.878101
这应该阻止循环进一步工作.我的理解在某处显然是错误的,但我看不到哪里!
请停下来……
解决方法
您可以尝试使用Python可视化工具来查看猜测值如何随每次迭代而变化.
Try here.