Python - 检查数字是否为正方形

新手上路,请多包涵

我写了一个函数,返回输入的数字是否为正方形

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 许可协议

阅读 932
1 个回答

您的函数实际上不起作用,因为它会在找到第一个非平方根时立即返回 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()

请记住,此方法不适用于非常大的数字,但您的方法将非常慢,因此您必须选择使用哪个。希望我有所帮助!

原文由 BluCode 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题