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

请利用filter()过滤出1~100中平方根是整数的数,即结果应该是: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

import math def is_sqr(x):  return math.sqrt(x) and int(math.sqrt(x)) == sqrt(x) print filter(is_sqr, range(1,101)) 这样为什么不行呢

正在回答

3 回答

先整理你的代码:

import math
def is_sqr(x):
    return math.sqrt(x) and int(math.sqrt(x)) == sqrt(x)
    
print filter(is_sqr, range(1, 101))

运行报错:

NameError: global name 'sqrt' is not defind

所以是sqrt岀问题了,就是那最后一个,加上math.

import math:
def is_sqrtx):
    return math.sqrt(x) and int(math.sqrt(x)) == sqrt(x)


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

Zombee

return math.sqrt(x) and int(math.sqrt(x)) == maht.sqrt(x)
2016-12-13 回复 有任何疑惑可以回复我~
#2

小楼昨夜又风雨 提问者

非常感谢!
2016-12-14 回复 有任何疑惑可以回复我~

import math 

l = filter(lambda x : int(math.sqrt(x)) == math.sqrt(x), range(1,101))

print(list(l))



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

import math

def is_sqr(x):

    r = int(math.sqrt(x))

    return r*r==x       

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


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

举报

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

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

进入课程

请利用filter()过滤出1~100中平方根是整数的数,即结果应该是: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

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