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

为什么不可以直接用sum函数

def square_of_sum(L):

    for name in L:

        return sum(name*name)

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

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


正在回答

1 回答

是这样的,你这个有两个问题:

1、sum求和函数的参数是list,不信你试试sum(1,2,3),会报错。

2、在定义函数的时候,遇到return就跳出定义(停止)。

你先试试下面这个

def square_of_sum(L):

    for name in L:

        return name

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

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

运行结果是: 1,-5。

说明了for只循环了一次,遇到return,返回第一个数,跳出。

那我们现在来解决第一个问题,既然sum的参数是list,在这题我们就可以把L的参数一个个的拿出来,并且拿出来的过程中x*x,再放到一个新的list里,在执行sum()即可

code:

def square_of_sum(L):    #定义函数

     b=[]     #定义一个新的list,list名是b

     for i in L:   #for循环,i  in   L里

           b.append(i*i)   #往新list里放入参数:i*i

     return sum(b)  #sum函数派上用场

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

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

#注意缩紧!



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

幕布斯0564268 提问者

非常感谢!
2016-07-29 回复 有任何疑惑可以回复我~
#2

weibo_星殿_叮咚怪才就是我_03710385

输入最后列出的代码得到的结果分别是1和25啊,也就是执行完第一个元素后就直接return了。。。请问该怎么解决?
2016-07-30 回复 有任何疑惑可以回复我~
#3

TimeMachine丶 回复 weibo_星殿_叮咚怪才就是我_03710385

请你注意缩进啊...return sum(b) 是和for i in l那一列对齐的,不是和b.append(i*i)对齐...
2016-08-01 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么不可以直接用sum函数

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