我制作了一个 python 脚本来轻松找到平方根,但我无法阻止它

I made a python script to easily find a square root but I can't stop it

我制作了一个 python 脚本来计算一个数的平方根并打印出到目前为止的结果,但它使用了一个无限循环,我无法停止它。有人知道打印了好几次正确答案后如何停止吗?

我正在寻找停止条件。我可以阻止它,但不知道什么时候停止它

代码如下:

def find_root(n):
    if n < 1:
        print("error")
        return
    n1 = 1
    n2 = n
    run = True
    while run:
        hw = n1 + ((n2 - n1) / 2)
        if (hw ** 2) < n:
            n1 = hw
        else:
            n2 = hw
        print(hw)
           
inp = float(input())
find_root(inp)

稍作修改。

def find_root(n):
    if n < 1:
        print("error")
        return
    n1 = 1
    n2 = n
    run = True
    prev = -1
    while run:
        hw = n1 + ((n2 - n1) / 2)
        if (hw ** 2) < n:
            n1 = hw
        else:
            n2 = hw
        if prev == hw:
            break
        prev = hw
        print(hw)
           
inp = float(input())
find_root(inp)

prev 检查您刚才计算的数字以前是否见过。如果是,说明你已经找到了正确的根!

您的代码包含 while true 没有中断。你可以试试:


def find_root(n, eps = 1e-3):
    if n < 1:
        print("error")
        return
    n1 = 1
    n2 = n
    run = True
    while run:
        hw = n1 + ((n2 - n1) / 2)
        if (hw ** 2) < n:
            n1 = hw
        else:
            n2 = hw
        if (n2-n1) < eps:
            run = False
    return hw
print(find_root(2)) # 1.4150390625