为了账号安全,请及时绑定邮箱和手机立即绑定

filter

def f(x):

    return x and math.sqrt(x)-int(math.sqrt(x))==0

def f(x):

    return math.sqrt(x)-int(math.sqrt(x))==0


为什么这两个代码结果一样呢。下面这个代码感觉有点理解不了  返回这个等式?


正在回答

3 回答

and叫做逻辑运算符,只有前后都为1(或者说为真)的时候,and表达式才返回1(或者说真)。

其实,除了0都是1。比如,

if 0 :

    print(1)

if 1 :

    print(1)

及if -1:

   print(1)

后两者都可以输出。(就是上面说的,不是0就是1。)

返回来看and,and在进行判断时,有的地方叫做“惰性判断”,有的叫做“短路判断”。就是说如果and前面的返回结果为假,and后面的表达式就不看了,整个表达式直接返回假。

也就是说,如果and前面为假,表达式返回假,如果不为假,则直接返回and后面的表达式的返回结果。因为and前表达式不为假,and的结果就完全取决于后面的表达式。

回头看你的第一个函数,and之前x参数,x的取值是1-100,说过了,除了0就是1。也就是前为真,整个表达式返回and之后的内容,也因此,两个函数在功能上是相同的。

0 回复 有任何疑惑可以回复我~

我也不太懂呢 为什么返回的不是true和false呢?

0 回复 有任何疑惑可以回复我~

math.sqrt(x)-int(math.sqrt(x))==0是一个可以判断真伪的式子,即返回判断的结果

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程
意见反馈 帮助中心 APP下载
官方微信