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

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

運行成功輸出錯誤麻煩看一下謝謝了

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
  • 參與學習       758398    人
  • 解答問題       8967    個

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

進入課程

運行成功輸出錯誤麻煩看一下謝謝了

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

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

幫助反饋 APP下載

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

公眾號

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