我有一个应该计算2的平方根的脚本,只有它目前有两个我似乎无法解决的问题。首先,while循环不会停止,即使它应该停止:
(这是我运行此脚本时输出的前几行,其余的只是重复最后4行。)
sqrt: 1.5
sq: 2.25
sqrt: 1.41666666667
sq: 2.00694444444
sqrt: 1.41421568627
sq: 2.0000060073
sqrt: 1.41421356237
sq: 2.0
sqrt: 1.41421356237
sq: 2.0
另外,由于2的平方根是无限数,我不明白为什么它在1.41421356237停止并且没有更大的数字。
这是我的代码:
import time
def sq(inp):
a = float(inp)
return a * a
a = 2.0
b = 1
while sq(b) != 2.0:
b = (b + a / b) / 2
print 'sqrt: ', b
print 'sq: ', sq(b)
time.sleep(0.1)
print 'Done!'
(我已经添加了一些额外的内容来澄清,例如print 'Done'
和延迟,但它对我没有任何改变。)
非常感谢任何帮助。谢谢!