假如把標準答案中第一個return改成print 0 就會運行出0 None 1.5 2.4 這樣的結果,為什么會出現多出來的None?
def average(*args):
? ? sum=0.0
? ? if len(args)==0:
? ? ? ? print 0
? ? for x in args:
? ? ? ? sum=sum+x
? ? ? ? return sum/len(args)
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)
結果:
0
None
0.5
0.2
自己檢查出最后一個return縮進有問題,但真的好神奇,為什么會有None??為什么會是平均數得到結果會是首位數除以位數呢
2017-03-19
為什么會是平均數得到結果會是首位數除以位數
for x in args:
? ? ? ? sum=sum+x
? ? ? ? return sum/len(args)
這個return縮進了,表示return是在這個for語句下的,當遍歷第一個x時,執行完sum=sum+x后,直接就執行return語句了,這個for語句實際上只進行了一次遍歷,所以你得到的平均數只是第一位數除以位數。
2017-03-19
args等于0的時候執行到print 0結束,會有一個返回值,因為沒寫return的值所以默認返回None