使用以下方法创建一个函数来查找数字的平方根

creating a function to find a square root of a number using the following method

最近,我试图创建一个算法来求一个数的平方根。我是 python 编程的新手。这是我的实现:

def findSquareRt(num):
    n = 8         #Initial Guess
    while True:
        if n**2 < num:
            if not num/n == n:
                temp = n
                n = num/n
                if (int((temp+n)/2))**2 == num:
                    return ((temp+n)/2)
                else:
                    n = (temp+n)/2  

但是当我 运行 上面的代码时,它不会产生任何输出。也许是循环条件导致的,但我想不通。

您的代码有很多问题,其中之一是如果 n**2 > num 会出现无限循环。 一个更简单的方法是这样的:

def findSquareRt(num):
     return num**0.5

感谢您对问题的回复,从回复来看有两个问题:

第一个问题:

if n**2 < num:

这个条件总是在第二次或其他一些未来的迭代中返回 False,并且是多余的,所以应该删除它以获得解决方案。

第二题:

if (int((temp+n)/2))**2 == num:

表达式 ((temp+n)/2) 的整数转换返回浮点数的底值,这会影响输出的精度,因此程序无限地卡在循环中等待条件成立真的。因此需要改变。

最终解决方案:

def findSquareRt(num):
    n = 8               #Initial Guess
    while True:
        if not num/n == n:
            temp = n
            n = num/n
            if (((temp+n)/2))**2 == num:
                return ((temp+n)/2)
            else:
                n = (temp+n)/2
        else:
            return n