课程
/后端开发
/Python
/python进阶
import math def is_sqr(x): if isinstance(math.sqrt(x),int) == ture return x print filter(is_sqr, range(1, 101))
2016-07-27
源自:python进阶 2-6
正在回答
你再了解一下math.sqrt()函数,默认输出是浮点数,即math.sqrt(4)==2.0,你这样写是一个数字都输出不了的
慕容6137442 提问者
KawhiKing 回复 慕容6137442 提问者
你的思路没有任何问题,挺不错的。除了那个true,应该是True。但也许是你打错了
问题出在
math.sqrt()返回的值是浮点型float,并不是整型int
>>> isinstance(4.0,int)
False
>>> type(4.0)
<type 'float'>
>>>
import math
def is_sqr(x):
r = int(math.sqrt(x))
return r*r==x
if isinstance(math.sqrt(x),int):
return True
else:
return False
print filter(is_sqr, range(1, 101))
按照我的再试试
满意的话还请设个最佳答案哈
import mathprint math.sqrt(4)
#=>2.0
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计