為什么不可以直接用sum函數(shù)
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
舉報(bào)
2016-07-26
是這樣的,你這個(gè)有兩個(gè)問題:
1、sum求和函數(shù)的參數(shù)是list,不信你試試sum(1,2,3),會(huì)報(bào)錯(cuò)。
2、在定義函數(shù)的時(shí)候,遇到return就跳出定義(停止)。
你先試試下面這個(gè)
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])
運(yùn)行結(jié)果是: 1,-5。
說明了for只循環(huán)了一次,遇到return,返回第一個(gè)數(shù),跳出。
那我們現(xiàn)在來解決第一個(gè)問題,既然sum的參數(shù)是list,在這題我們就可以把L的參數(shù)一個(gè)個(gè)的拿出來,并且拿出來的過程中x*x,再放到一個(gè)新的list里,在執(zhí)行sum()即可
code:
def square_of_sum(L): ? ?#定義函數(shù)
? ? ?b=[] ? ? #定義一個(gè)新的list,list名是b
? ? ?for i in L: ? #for循環(huán),i ?in ? L里
? ? ? ? ? ?b.append(i*i) ? #往新list里放入?yún)?shù):i*i
? ? ?return sum(b) ?#sum函數(shù)派上用場
print square_of_sum([1, 2, 3, 4, 5])
print square_of_sum([-5, 0, 5, 15, 25])
#注意縮緊!