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

判断出一个数的平方根是否是整数的问题

r = int(math.sqrt(x))
    return r*r==x

这两条语句不理解是什么意思

正在回答

2 回答

因为math.sqrt()函数会返回一个float类型(浮点型)数,所以要判断该数的平方根是否为整数要现将其转换为整型(float类型转换为整型会将其从小数点截断只保留整数)然后再判断该数的平方是否与x相等即可,相等即可证明x的平方根为整数。

int(math.sqrt(x))中math.sqrt(x)表示求x的平方根,int()表示将其转换为整型

return r*r==x表示判断r(经过类型转换得到的值)的平方是否等于x,等于则返回ture,不等于则返回false

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

qq_透明也褪色_0 提问者

谢谢您 非常感谢 看懂了
2018-01-25 回复 有任何疑惑可以回复我~
#2

qq_透明也褪色_0 提问者

对了 还有就是判断语句那里一定要用return来写吗
2018-01-25 回复 有任何疑惑可以回复我~
#3

云才哥 回复 qq_透明也褪色_0 提问者

判断的话没有必要一定用return 但是这个函数必须要返回一个bool值到调用该函数的filter()函数,如果这个bool值是ture的话filter()就会将其(列表中作为参数的数)存入一个迭代器,若为false则不存,继续下一次调用函数。 不用return的话就要这样写: judgement=r*r==x return judgement
2018-01-25 回复 有任何疑惑可以回复我~

楼上是正解:还有一种方案更好理解点:


r = math.sqrt(x)
r == int(r)

判断平方根和转换成int类型是否相等,相等就是整数

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

云才哥

这样严格来讲是不行的吧?因为你只是再判断r的值等于int(r)的值,但它们的类型都不同,何来相等?我不知道为什么python可以这样子判断,因为在c类似语言是不行的,难道是因为python没有变量类型?这里面怕是一个无底洞,欢迎一起讨论
2018-01-24 回复 有任何疑惑可以回复我~
#2

qq_透明也褪色_0 提问者

嗯嗯 谢谢您
2018-01-25 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

判断出一个数的平方根是否是整数的问题

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