Python 3.x 为什么浮点值会触发我的第一个if语句?

Python 3.x 为什么浮点值会触发我的第一个if语句?,python-3.x,math,Python 3.x,Math,以变量4为例,2.0的结果显然是一个浮点。我不知道为什么它会触发我的第一个if语句。是因为平方根是变量的引用,而不是2.0吗?我希望采取复杂的数字,我需要“是不是不存在”的工作正常 square_root = 4 ** (1/2) if square_root != isinstance(square_root,float): return False if square_root.is_integer(): return True else: return Fals

以变量4为例,2.0的结果显然是一个浮点。我不知道为什么它会触发我的第一个if语句。是因为平方根是变量的引用,而不是2.0吗?我希望采取复杂的数字,我需要“是不是不存在”的工作正常

square_root = 4 ** (1/2)


if square_root != isinstance(square_root,float):
    return False
if square_root.is_integer():
    return True
else:
    return False

isinstance
已返回您要查找的布尔值,将其与
square_root
进行比较毫无意义,而且它将始终为
False
,因为它将数值与布尔值进行比较


从技术上讲,
如果平方根!=isinstance(平方根,浮点):
如果isinstance(平方根,浮点):,则应该是
,但我不确定您希望此检查何时为
False
4**(1/2)
(使用任何数字)将始终返回一个
浮点

什么类型的
isinstance
返回?可以肯定的是,它不是
平方根的类型,所以它们不会是
=
什么是
平方
?请发表一篇不依赖于其他地方定义的变量的文章(尽管在本例中,@DeepSpace已经明确指出了问题)。我修正了我的文章,我是指平方根而不是平方根。这是你的问题的答案吗?这回答了你的问题吗?我将用变量替换4。我希望收到的变量不是浮点数,比如复数。我怎样才能使用“IsnotisInstance”?@DanNand
如果不是…
啊,那么我就只能继续使用了!。非常感谢。狡辩:
1.0==True
的计算结果为
True
,因此“它将始终为False,因为它将数值与布尔值进行比较”并不十分准确。除此之外,还有一个好答案。@JohnColeman确实如此,
0.0==False
。我故意忽略了这2(4?)个边缘案例。