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

为什么这样写无法通过,返回的数据为空

import math


def is_sqr(x):

    if isinstance(math.sqrt(x),int):

        return x

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


正在回答

1 回答

  1. math.sqrt的返回值是浮点数,所以你的"if isinstance(math.sqrt(x),int)"必然是False的,所以is_sqr()一定返回None,转换为布尔型,即为False

  2. filter()的第一个参数,要求为布尔型,可你调用is_sqr()都会返回False,那么必然一个数值都筛选不出来,自然返回的数据为空

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

wxa1 提问者

那除了标准答案之外 我要是用这种判定的方法如何能实现呢
2016-02-22 回复 有任何疑惑可以回复我~
#2

晴雨踏青

同问提问者的问题2
2016-02-25 回复 有任何疑惑可以回复我~
#3

啊B 回复 晴雨踏青

import math def is_sqr(x): return math.sqrt(x)%1==0 print filter(is_sqr, range(1, 101)) 是从同学代码中学习到的
2016-02-28 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么这样写无法通过,返回的数据为空

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