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

python 进阶 2-6任务里的代码理解问题。

import math

def is_sqr(x):

r = int(math.sqrt(x))

return r*r==x

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

其中的r = int(math.sqrt(x)) 我觉得int()只是取整,所以range(1,101)里的每一个数都符合这个 条件,怎么就能判断一个数的平方根是整数呢?


正在回答

3 回答

int中的数只会取他个整数部分。sqrt(14)=3.7416 如果int后是3  return 3*3==14 如果平方根是小数,那么他的平方根int后相乘肯定不可能等于原来的数字。

0 回复 有任何疑惑可以回复我~

明白了!感谢!

0 回复 有任何疑惑可以回复我~

math.sqrt(x)返回的是x的平方根浮点数

用int()取整后,浮点数中的小数部分被忽略掉了,比如5的平方根为2.2360679775,取整后得2即r=2

然后r*r == x 即判断2*2 == 5 显然是flase,然后被filter过滤掉了

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

慕粉1011204093 提问者

非常感谢!
2017-02-08 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

python 进阶 2-6任务里的代码理解问题。

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