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

运行成功输出错误麻烦看一下谢谢了

def square_of_sum(L):

    for x in L:

        L = [x * x]

        return sum (L)

print square_of_sum([1, 2, 3, 4, 5])

print square_of_sum([-5, 0, 5, 15, 25])


正在回答

2 回答

for循环里面用来存储的变量错误。for循环里第一次执行 “ L = [x * x] ”后,L 里的元素已变为只含有1,相当于这时直接输出 L 得到的是[1],并且,你将return放到了for循环里面,所以“ print square_of_sum([1, 2, 3, 4, 5]) ”,执行后的结果会变为1。

如果你将renturn放到for循环外面,与它对齐,那么“ print square_of_sum([1, 2, 3, 4, 5]) ”,执行后的结果会变为25,因为for循环把 L 遍历完了,最后“ L=[x*x] ”即5*5,故输出结果为25,且此时 L 里的元素只含有25。不过这个时候我还没理解到他为什么会遍历到5去,因为我认为在第一个执行后,L 就变为了[1],就只剩一个元素了,就不应会有后续元素的遍历了。

你的代码可以和下面的代码对比运行一下

def square_of_sum(L):

    s=[]

    for x in L:

        s.append(x*x)

    return sum (s)

print square_of_sum([1, 2, 3, 4, 5])

print square_of_sum([-5, 0, 5, 15, 25])


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

AnkaAka 提问者

多谢多谢
2018-12-06 回复 有任何疑惑可以回复我~
#2

yh_y 回复 AnkaAka 提问者

局部作用域 > 嵌套作用域 > 全局作用域 > 内置作用域(参考链接https://www.cnblogs.com/fireporsche/p/7813961.html) 所以你原来的代码def square_of_sum(L)这句里L是个嵌套作用域,在for循环里又重新定义了一个局部作用域的L,所以他会遍历到5去,最后输出25
2018-12-09 回复 有任何疑惑可以回复我~
#3

yh_y 回复 AnkaAka 提问者

这个是针对我自己那个25的疑问。
2018-12-09 回复 有任何疑惑可以回复我~


def square_of_sum(z)
    sum = 0
    for x in z:
        sum = sum + x * x
    return sum
print(square_of_sum([1,2,3,4,5]))
print(square_of_sum([-5,0,5,15,25]))
这样写就对了,虽然我也不知道为啥


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

AnkaAka 提问者

应该是我的对齐出问题了一直没搞清楚这一块知识。不过还是谢谢你啦
2018-12-01 回复 有任何疑惑可以回复我~
#2

倀空

你贴的和我写的一样,我们的目的是输出列表中所有元素的平方和,所以直接声明一个sum变量,用来存储for循序每一次取出的值的平方和
2018-12-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758620    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

运行成功输出错误麻烦看一下谢谢了

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