课程
/后端开发
/Python
/python进阶
为什么return后面不能直接写r*r呢?后面还非要加==x?
为什么用下面的if语句写不对?
def is_sqr(x)
if int(math.sqrt(x))==1:
return x
2019-04-21
源自:python进阶 2-6
正在回答
import math
def is_sqr(x):
if int(math.sqrt(x))==1:
print filter(is_sqr, range(1, 101))
当x=4时,sqrt(x)=2 不等于1,判断结束
结果是
[1, 2, 3]
for i in range(1,11): if i*i==x: return x else: i=i+1print filter(is_sqr, range(1, 101))
这样子写的话,个人感觉很好理解?
慕粉0330126670_kaese
慕粉0330126670_kaese 回复 慕粉0330126670_kaese
int(math.sqrt(x))==1: 表示平方根整数部分为1的数有哪些,在1-100中间,1,2,3,的平方根分别是1,1.414, 1.236,整数部分是1.
加==x表示一个判断,返回类型为布尔型。值为True或者False。而filter()函数 f 的作用是对每个元素进行判断,返回 True或 False。
如果直接返回r*r,那就是r*r,如果r=0则为False否则值为True。此题输出结果就变成range(1,101)的结果了
唯卫bww 提问者
r = int(math.sqrt(x))
return x == r *r
x == r * r 也是可以的,返回 x
然后你的那代码def is_sqr(x) 少了冒号 ' : ' 还有很多问题,我也是萌新,很多不懂的,查了一下,改了一会,即使运行起来也不是正确的答案(我算数差,)
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计