代码找不到平方数(python初学者)



嗨,我是一个完全的初学者,有人能帮我解释为什么我的代码不起作用吗?

-尝试该数字是否为平方数(真/假(

import math 
def is_square(n): 
if n >= 0:
if math.sqrt (n).is_integer :
print (n,"is a square number")
return True

else:
print (n," is not a square number ")
return False

else: 
print ( n,":","Negative numbers cannot be square numbers")
return False

语法:variable. is_integer()

import math 
def is_square(n): 
if n >= 0:
if math.sqrt (n).is_integer() : # you need to call the .is_integer method
print (n,"is a square number")
return True

else:
print (n," is not a square number ")
return False

else: 
print ( n,":","Negative numbers cannot be square numbers")
return False
is_square(-4)
is_square(4)
is_square(5)
-4 : Negative numbers cannot be square numbers
4 is a square number
5  is not a square number 

要获得更好的洞察力,请尝试获取输出:

print(math.sqrt (5).is_integer(), 'n' ,math.sqrt (5).is_integer)
False 
<built-in method is_integer of float object at 0x7f320fba2360>

math.sqrt (n)返回一个浮点数。例如,math.sqrt(144)将为12.0。因此,is.integer()方法不起作用。尝试添加以下代码:

if n >= 0:
p=math.sqrt(n)
if p==int(p):
print (n,"is a square number")
return True
else:
return False 

以下是一些例子:

>>> 12==int(12)
True
>>> 12.0==int(12.0)
True
>>> 12.3==int(12.3)
False

最新更新