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

2024-10-02 02:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我试图创建一个算法来寻找一个数字的平方根。我对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  

但是当我运行上面的代码时,它不会产生任何输出。也许是循环条件导致了这一点,但我无法理解


Tags: 算法trueifdef编程not数字temp
2条回答

感谢您回答问题,从回答中有两个问题:

第一个问题:

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

您的代码有很多问题,其中之一是如果n**2 > num,您将得到一个无限循环。 一种更简单的方法是:

def findSquareRt(num):
     return num**0.5

相关问题 更多 >

    热门问题