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

不太理解print square_of_sum([-5, 0, 5, 15, 25]) 这个为什么不是打印出LIST了?

def square_of_sum(L):

    sum = 0

    for x in L:

        sum = sum + x*x

    return sum

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

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

 最后的print里的数列为什么不是打印出来,而是对前面square_of_sum(L)定义了?最后的输出结果是sum的值,可是并没有写print sum,为什么会输出sum值了?感觉对这节里的这两个逻辑不是很清楚。

我分别试验过def square_of_sum(L):
   square_of_sum([1, 2, 3, 4, 5])
   sum = 0
   for x in L:
       sum = sum + x*x
   return sum
print sum

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

都无法成功输出结果,不知道我为什么错了


正在回答

3 回答

def是表示自定义一个函数,square_of_sum()是函数名,L是调用这个函数要用到的参数(形式参数),这个函数中的return sum表示函数执行完后返回sum。没有写print sum而最后输出的是sum 的值是因为print square_of_sum([1, 2, 3, 4, 5])这类语句用print调用了square_of_sum()这个函数,square_of_sum()返回一个sum值给调用它的print,square_of_sum()的结果是sum,print square_of_sum()的结果就是print sum。

至于你后面无法输出正确的结果是因为你把函数定义和函数调用混在一起使用。

def square_of_sum(L):

    sum = 0

    for x in L:

        sum = sum + x*x

    return sum

这是一个规范的自定义函数,调用它时只需把形式参数L换成实际参数(如:[1,2,3,4,5])就可以了。像square_of_sum([1, 2, 3, 4, 5])就是正确的调用方式,但你不可以在编写这个函数的时候再把这个调用语句加在里面(除非你写的是递归函数),还有一个就是你最后调用的时候不可以写成print square_of_sum,而要写成print square_of_sum(),括号里面写你要传入的参数。

希望这些能够对你有所帮助。

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

慕粉1648481082 提问者

非常感谢!
2017-02-04 回复 有任何疑惑可以回复我~
#2

qq_奋斗_101

那 sum = 0 跟 print square_of_sum()最后打印的这个函数是什么关系呢?
2017-06-07 回复 有任何疑惑可以回复我~
#3

qq_奋斗_101

新手这节课感觉好难理解 请大神热心解答下跪谢!
2017-06-07 回复 有任何疑惑可以回复我~

执行函数相当于获取函数的返回值,你的返回值就是计算的SUM结果,如果想做成list见下方代码:

def square_of_sum(L):

    sum = []

    for x in L:

        s=x*x

        sum.append(s)

    return sum

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

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


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

唔,这个涉及到函数咯,之前如果写过一点c之类的可以更好的理解。

print里的square_of_sum() 在之前被def声明为一个函数。这时遇到函数调用square_of_sum(L),就会把L传进去函数体执行完任务,然后再被return返回回来。画个流程图给你看一下:

好吧,慕课的传图渣渣,,,传不上来。

在c语言里 一个函数的返回值是有类型的,python里是自动的,所以c比较能让你理解这个过程。比如int function(int a)就是表明函数function接受一个整数值,并在函数体里把这个值赋给了a,所以你调用这个函数的时候,就比如funtion(10),10就进入那个函数被赋给了a,然后通过处理运算被return语句返回回来。

即是调用函数的过程就像对着一个机器,你输入一个数字(或者其他什么东西),他返回一个数(或者啥啥的)。

print square_of_sum([10])) ----》调用函数square_of_sum() 把[10]传给L-----》运算,return返回一个值sum-------》print sum

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

举报

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

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

进入课程

不太理解print square_of_sum([-5, 0, 5, 15, 25]) 这个为什么不是打印出LIST了?

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