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

为什么用isinstance 不可以呢

import math


def is_sqr(x):

    return x and isinstance(math.sqrt(x),int) 


print filter( is_sqr, range(1, 101))


正在回答

1 回答

#因为math.sqrt(x)返回值不是int类型的,你可以打印出来看一看

import math

def is_sqr(x):    
    r = math.sqrt(x)    
    return x and r == int(r)
    
print filter( is_sqr, range(1, 101))


1 回复 有任何疑惑可以回复我~
#1

qq_庄sir_0 提问者

isinstance不就是判断是不是一样,他返回类型不一样就排除掉了,留下整数
2018-08-28 回复 有任何疑惑可以回复我~
#2

StevyQi 回复 qq_庄sir_0 提问者

确实是判断一样不一样,但是判断的仅仅是类型。 print isinstance(1,int) #True print isinstance(1.0,int) #False 你可以参考下面这两个网址上的说明。 http://www.runoob.com/python/python-func-isinstance.html https://www.w3schools.com/python/ref_func_isinstance.asp
2018-08-28 回复 有任何疑惑可以回复我~
#3

qq_庄sir_0 提问者 回复 StevyQi

懂了,谢谢大哥
2018-08-28 回复 有任何疑惑可以回复我~
#4

qq_庄sir_0 提问者 回复 qq_庄sir_0 提问者

意思就是sqrt返回整数也会带一个小数点,所以返回的永远是浮点数
2018-08-28 回复 有任何疑惑可以回复我~
查看1条回复

举报

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

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

进入课程

为什么用isinstance 不可以呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信