微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我检查完美平方的功能不起作用,但它的组件单独工作

如何解决我检查完美平方的功能不起作用,但它的组件单独工作

这是我的功能

def is_square(n):    
    x = n ** 0.5
    return((x >= 0) & (x % 1 == 0))

当我跑步时

is_square(-1)

我收到此错误消息:

Traceback (most recent call last):

  File "<ipython-input-183-33fbc4575bf6>",line 1,in <module>
    is_square(-1)

  File "<ipython-input-182-32cb3317a5d3>",line 3,in is_square
    return((x >= 0) & (x % 1 == 0))

TypeError: '>=' not supported between instances of 'complex' and 'int'

但是,此功能的各个组件都运行良好。

x = -1 ** 0.5

x >= 0
Out[185]: False

x % 1 == 0
Out[186]: True

(x >= 0) & (x % 1 == 0)
Out[189]: False

为什么我的功能不起作用?

解决方法

您在函数中所做的是将 x 定义为 sqrt(n)。 对于 n = -1 表示 x = i (意思是 sqrt(-1))所以 >= 表达式没有实际意义。 当您单独测试函数的该部分时,代码被读取为 -(1**0.5)。 您会看到,当您将其重写为 (-1)**(0.5) 时,它将不再起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。