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

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

假如把標準答案中第一個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??為什么會是平均數得到結果會是首位數除以位數呢

正在回答

2 回答

為什么會是平均數得到結果會是首位數除以位數

for x in args:

? ? ? ? sum=sum+x

? ? ? ? return sum/len(args)

這個return縮進了,表示return是在這個for語句下的,當遍歷第一個x時,執行完sum=sum+x后,直接就執行return語句了,這個for語句實際上只進行了一次遍歷,所以你得到的平均數只是第一位數除以位數。


1 回復 有任何疑惑可以回復我~
#1

慕粉4231960 提問者

非常感謝!!
2017-03-20 回復 有任何疑惑可以回復我~
#2

慕粉4231960 提問者

非常感謝!
2017-03-20 回復 有任何疑惑可以回復我~

args等于0的時候執行到print 0結束,會有一個返回值,因為沒寫return的值所以默認返回None

0 回復 有任何疑惑可以回復我~
#1

慕粉4231960 提問者

謝謝,我再把問題補充一下,我第二個return縮進有問題,但為什么會是平均數得到結果會是首位數除以位數呢
2017-03-19 回復 有任何疑惑可以回復我~
#2

慕粉2311432765 回復 慕粉4231960 提問者

求和在for循環內完成,用總和值除以可變參數的長度就是平均數
2017-03-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

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

進入課程

假如把標準答案中第一個return改成print 0 就會運行出0 None 1.5 2.4 這樣的結果,為什么會出現多出來的None?

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

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

幫助反饋 APP下載

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

公眾號

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