使用以下方法创建一个函数来查找数字的平方根
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
最近,我试图创建一个算法来求一个数的平方根。我是 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