我写了一个函数,返回输入的数字是否为正方形
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))
,它说这个值不是预期的。
原文由 M. Abra 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的函数实际上不起作用,因为它会在找到第一个非平方根时立即返回 False。相反,您需要将代码修改为:
这样它只会在检查完所有可能的平方根后才返回 false。您可能还想查看
math.sqrt()
和float.is_integer()
。使用这些方法你的函数将变成这样:请记住,此方法不适用于非常大的数字,但您的方法将非常慢,因此您必须选择使用哪个。希望我有所帮助!