if graph == square_grid and type(math.sqrt(nodes)) is not int:
print "Your netork can't have that number of nodes"
当然,这并不工作,因为math.sqrt总是返回一个浮点数。我怎样才能做到这一点?
if graph == square_grid and type(math.sqrt(nodes)) is not int:
print "Your netork can't have that number of nodes"
当然,这并不工作,因为math.sqrt总是返回一个浮点数。我怎样才能做到这一点?
一种方法是
int(math.sqrt(x)) ** 2 == x
因为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
尝试:
math.sqrt(nodes) == int(math.sqrt(nodes))
嗯。由于在计算过程中出现四舍五入错误,将浮点数视为不精确,是否会发生方数的sqrt()最终不会成为整数?这会让@ larsmans的回答更好。 – millimoose 2013-05-07 18:54:24
这是一个有效的点,但我只是运行了一个for循环,使用这种方法可以打印出所有有效的正方形高达100,000,并且它不会错过任何一个。 – 2013-05-07 19:04:10
整数完全以浮点形式表示(它们在点之后全部为零)。不过,我不确定'sqrt'是否可以保证这一点。 – 2013-05-07 19:18:59