亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么不可以直接用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
  • 參與學習       758397    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

為什么不可以直接用sum函數

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號