课程
/后端开发
/Python
/python进阶
请帮忙解惑
2018-04-03
源自:python进阶 2-6
正在回答
这个不能那样计算的,你可以单独试试看 print(isinstance(math.sqrt(4),int)),这个的结果也是错的,因为math.sqrt()出来的是flout 所以不是int
吴暖 提问者
>>>isinstance(math.sqrt(4),int) False 这个结果总是False,为啥呢?因为4的平方根是2.0 ,是一个浮点数,而不是整数 所以你得替换一下 把浮点数转换成整数 >>> isinstance(int(math.sqrt(4)),int) True # int(2.0) = 2 而2.0 == 2 是true的 所以你得判断下平方根是否是整数 import math def is_sqrt(x): return math.sqrt(x) == int(math.sqrt(x)) print filter(is_sqrt, range(1,101))
除了一楼说的语法错误,return x and isinstance(math.sqrt(x),int)==Ture,这部分最后结果,根据and和or的短路运算法则,return的总是and后面的东西,并非数x,所以无法得出正确的结果,有尝试性的将x与and后的判断换过位置,得出的结果跟没换位置前一样,都是“[]”,但不清楚为什么都会是返回一个空列表,如有知晓其中缘由,请帮忙解惑
最后一行少了 )
qq_龙_18 回复 吴暖 提问者
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计