不太理解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
都無法成功輸出結果,不知道我為什么錯了
2017-01-22
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(),括號里面寫你要傳入的參數。
希望這些能夠對你有所幫助。
2017-01-23
執行函數相當于獲取函數的返回值,你的返回值就是計算的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])
2017-01-22
唔,這個涉及到函數咯,之前如果寫過一點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