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

定义函数嵌套sun()

定义函数嵌套函数,感觉逻辑上没错,但是为什么答案是15和40而不是平方和。

def square_of_sum(L):

    for x in L:

        x=x*x

    return sum(L)

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

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


正在回答

3 回答

def square_of_sum(L):
    for x in L:
        x=x*x
    return sum(L)
    
print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])

这个逻辑很简单,题主仔细看的话,很快就能明白,我分步骤来讲下,这个函数的调用过程:

  1. 调用square_of_sum([1, 2, 3, 4, 5])

  2. 执行 

for x in L:
    x=x*x

    在这一步,只是简单的做了一个列表循环,并没有改变列表L ,也就是[1,2,3,4,5]中的值。 这就涉及到 Python for 循环的原理了,在上面这个典型的for循环中,所做的只是,依次从列表中提出一个值,赋值给变量x, 改变x的值,并不能改变列表本人的值。

 3. 执行 sum([1,2,3,4,5]), 所以函数最终返回的只是 原列表的 和。

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

历练后的飞翔 提问者

谢谢,我懂了。请问我怎样才能重新赋值列表呢?
2016-03-25 回复 有任何疑惑可以回复我~
#2

清波 回复 历练后的飞翔 提问者

答复中没有代码格式,我下面回答
2016-03-25 回复 有任何疑惑可以回复我~

Sorry, 被问题误导了, 看了下课程, 是返回列表的平方和, 而不是改变列表后再求和。 所以代码如下:

def square_of_sum(L):
    sum=0
    for i in L:
        sum+=i**2
    return sum


1 回复 有任何疑惑可以回复我~
def square_of_sum(L):
    for index,value in enumerate(L):
        L[index]=value**2
    return sum(L)
def square_of_sum(L):
    for index in range(len(L)):
        L[index]=L[index]**2
    return sum(L)


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

举报

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

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

进入课程

定义函数嵌套sun()

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