3

我的代码是

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

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

4

3 回答 3

13

一种方法是

int(math.sqrt(x)) ** 2 == x
于 2013-05-07T18:50:43.083 回答
7

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

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

True如果x是正方形,False如果不是,这将返回

>>> is_square(25)
True
>>> is_square(14)
False
于 2013-05-07T18:52:32.913 回答
1

尝试:

math.sqrt(nodes) == int(math.sqrt(nodes))
于 2013-05-07T18:52:39.230 回答