作者:RebeccaLd | 来源:互联网 | 2023-02-01 12:52
我写了一个函数,它返回一个数字输入是否为正方形
def is_square(n):
if n<1:
return False
else:
for i in range(int(n/2)+1):
if (i*i)==n:
return True
else:
return False
我相信这段代码有效.但是,当我做测试用例时,例如:test.expect( is_square( 4))
,它表示该值不是预期的值.
1> BluCode..:
你的函数实际上不起作用,因为它会在找到的第一个非平方根上返回False.相反,您需要将代码修改为:
def is_square(n):
if n<1:
return False
else:
for i in range(int(n/2)+1):
if (i*i)==n:
return True
return False
这样一旦检查了所有可能的平方根,它就只返回false.您可能还想查看math.sqrt()
和float.is_integer()
.使用这些方法,您的功能将变为:
from math import sqrt
def is_square(n):
return sqrt(n).is_integer()
请记住,此方法不适用于非常大的数字,但使用它们的方法会非常慢,因此您必须选择使用哪种方法.希望我帮忙!
2> enedil..:
要坚持基于整数的算法,您可以查看二进制搜索的实现以找到平方根:
def is_square(n):
if n <0:
return False
if n == 0:
return True
x, y = 1, n
while x + 1