為什么不可以直接用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])
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])
2016-07-26
舉報
2016-07-26
是這樣的,你這個有兩個問題:
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])
#注意縮緊!