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

为什么return后面不能直接写r*r呢?

为什么return后面不能直接写r*r呢?后面还非要加==x?

为什么用下面的if语句写不对?

def is_sqr(x)

if int(math.sqrt(x))==1:

    return x

正在回答

6 回答

import math

def is_sqr(x):

    if int(math.sqrt(x))==1:

        return x

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

当x=4时,sqrt(x)=2 不等于1,判断结束

结果是

[1, 2, 3]


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

自己给自己顶上一个吧。

spd10000ekcziknqqbztzcgqwkvpxwuzhfi

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

import math

def is_sqr(x):

    for i in range(1,11):
        if i*i==x:
            return x
        else:
            i=i+1
print filter(is_sqr, range(1, 101))

这样子写的话,个人感觉很好理解?


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

慕粉0330126670_kaese

else那句根本不需要 前面有for循环
2019-06-10 回复 有任何疑惑可以回复我~
#2

慕粉0330126670_kaese 回复 慕粉0330126670_kaese

而且你是知道100以内的平方根的范围,如果给一个很大的数字,你就不能定义range的范围了
2019-06-10 回复 有任何疑惑可以回复我~

int(math.sqrt(x))==1:   表示平方根整数部分为1的数有哪些,在1-100中间,1,2,3,的平方根分别是1,1.414,  1.236,整数部分是1.

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

加==x表示一个判断,返回类型为布尔型。值为True或者False。而filter()函数 f 的作用是对每个元素进行判断,返回 True或 False。

如果直接返回r*r,那就是r*r,如果r=0则为False否则值为True。此题输出结果就变成range(1,101)的结果了

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

唯卫bww 提问者

谢谢 明白啦!
2019-05-23 回复 有任何疑惑可以回复我~

import math


def is_sqr(x):

    r = int(math.sqrt(x))

    return x == r *r


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


x == r * r 也是可以的,返回 x 

然后你的那代码def is_sqr(x) 少了冒号  '  : '  还有很多问题,我也是萌新,很多不懂的,查了一下,改了一会,即使运行起来也不是正确的答案(我算数差,) 

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

举报

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

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

进入课程

为什么return后面不能直接写r*r呢?

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