我曾尝试使用python计算this算法,但它似乎不起作用:
lt = False
x = 5
g = 2
while lt == False:
if g*g > (x-0.1) and g*g < (5.1):
lt = True
print(g+"IS THE SQUARE ROOT")
else:
g = (g + x/g)/2
print(g)
在else循环中,我打印g以查看我的算法在每个循环中的结果,因为我之前遇到了缓慢的计算并希望看到问题是什么,现在print(g)似乎一直在返回2。我是python的新手,问题可能就是盯着我,但我似乎无法想象,任何帮助都会非常感激!
答案 0 :(得分:2)
x = float(5)
g = float(2)
Python在v2.x中舍入int。希望这会有所帮助。
答案 1 :(得分:1)
你得到2因为python正在使用整数,因为你使用整数,你需要使用floats,如下所示:
x = float(5)
g = float(2)
现在:
>>g = (g + x/g)/2
>>print(g)
2.25
答案 2 :(得分:0)
交换else:
子句并阻止print()
来电。
答案 3 :(得分:0)
问题在于你的标签和空格的混合。 Python期望您保持一致,it is preferred使用四个空格进行缩进。标签是完全不同的字符,并不总是显示相同的宽度。在某些环境中,它们是4个字符宽。 Python将它们解释为8个字符宽。
这两行使用空格:
if g*g > (x-0.1) and g*g < (5.1):
lt = True
所有其他行都在使用标签。
答案 4 :(得分:0)
问题是python舍入整数。你需要输入set x和g作为浮点数
x = float(5)
g = float(2)
这应该有用,祝你好运! :)
这适用于python 2.x,但我不知道你使用的是哪个版本,所以这是我能提供的最佳答案。