与python等分的数的平方根?

  • 本文关键字:平方根 python python
  • 更新时间 :
  • 英文 :


用等分法求完全平方的平方根:

import bisect
def squareRootUsingBisect(num):
return bisect.bisect_left(list(range(0,num)), num, lo=0, hi=num, key=lambda v: v*v)
print(squareRootUsingBisect(169))

正确输出169的平方根:

13

问题是它也打印了一个非完全平方的数字:

print(squareRootUsingBisect(170))

打印

14

是误导。我可以确定bisect是否确实找到了值,如果没有,打印-1null吗?

bisect_left只给出最近的根。如果你想检查num是否真的是一个正方形,你必须在之后检查(bisect没有这样做的选项)

import bisect
def squareRootUsingBisect(num):
n = bisect.bisect_left(list(range(0,num)), num, lo=0, hi=num, key=lambda v: v*v)
return n if n*n == num else -1
print(squareRootUsingBisect(170)) # gives -1
print(squareRootUsingBisect(169)) # gives 13

能否在函数中添加一个ifcheck

if bisect_calc != num ** 0.5:
return -1

最新更新