首页 > 解决方案 > 我的结果是四舍五入的,我想要完整的答案

问题描述

这是我在 Python 中的代码:

def my_sqrt(a):
    x=1
    while True:
        y=(x+a/x)/2.0
        if y==x:
            break
        x=y
        return y

我得到的输出:

>>> my_sqrt(1.0)
>>> my_sqrt(2)
1.5

期待获得:

my_sqrt(1.0)-->1.0
my_sqrt(2)-->1.41421356237

标签: pythonrounding

解决方案


return结束函数并立即返回。它是缩进的,所以它在循环中并且在第一次迭代结束时无条件地运行。由于以下原因,使其在循环完成后运行break

def my_sqrt(a):
    x = 1
    while True:
        y = (x + a / x) / 2.0
        if y == x:
            break
        x = y
    return y

或者,由于return结束函数并因此结束循环,您甚至不需要break

def my_sqrt(a):
    x = 1
    while True:
        y = (x + a / x) / 2.0
        if y == x:
            return y
        x = y

推荐阅读