平方根算法错误

时间:2014-02-28 23:08:02

标签: python

我曾尝试使用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的新手,问题可能就是盯着我,但我似乎无法想象,任何帮助都会非常感激!

5 个答案:

答案 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,但我不知道你使用的是哪个版本,所以这是我能提供的最佳答案。