如何测试Python中的数字是否为正方形?

时间:2013-05-07 18:49:25

标签: python

我的代码是

if graph == square_grid and type(math.sqrt(nodes)) is not int: 
    print "Your netork can't have that number of nodes" 

当然这不起作用,因为math.sqrt总是返回一个浮点数。我怎么能这样做?

3 个答案:

答案 0 :(得分:13)

一种方法是

int(math.sqrt(x)) ** 2 == x

答案 1 :(得分:7)

因为math.sqrt总是返回一个浮点数,所以你可以使用内置的is_integer方法

def is_square(x):
    answer = math.sqrt(x)
    return answer.is_integer()

如果True是正方形,则返回x,如果不是<{p>},则返回False

>>> is_square(25)
True
>>> is_square(14)
False

答案 2 :(得分:1)

尝试:

math.sqrt(nodes) == int(math.sqrt(nodes))