课程
/后端开发
/Python
/python进阶
import math def is_sqr(x): if x<=10: return x*x print filter(is_sqr, range(1, 100)) 这么写为啥不对。。。
2015-10-05
源自:python进阶 2-6
正在回答
因为filter()是让函数依次作用于列表中的元素,根据函数来判断是否留下该元素,所以你在函数中希望返回值是x的平方并没有什么用,它还是原来列表中的元素。而且这也不该是做题的顺序啊,你倒是先想出了答案在往上套它的平方了。可以把is_sqr函数中的语句改成return math.sqrt(x) % 1 == 0
weibo_今天天气不错最喜欢早_0 提问者
print [x*x for x in range(1, 11)]
这个都可以得到相同结果。不能凑答案吧
函数执行return 就结束了,所以你的print语句没有执行。
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计