如果元組tuple為空,那么循環for x in args這個語句有效么?
求大神們幫忙看看,我這個哪里有問題。。 def average(*args): ? ?i=0 ? ?sum=0.0 ? ?for x in *args: ? ? ? ?sum=sum+x ? ? ? ?i=i+1 ? ?if i==0: ? ? ? ?return sum ? ?else ? ? ? ?return sum/i print average() print average(1, 2) print average(1, 2, 2, 3, 4)
2016-04-26
首先, *args 接受不定數量的參數, 在函數中調用的時候,不用星號(*)了, 在函數中調用的時候 args 就是傳入的參數 組成的 元組(tuple).
其次, 有了 len(args) , 就不用另外定義i 并且自加1 了。?
最后,為了防止 發生 除0 的錯誤,進入函數后,第一時間判斷參數長度。
所以, 根據上面三條,理解下正確答案。
2016-10-07
有sum函數為什么不用,還非得循環?
def average(*args):
if len(args) == 0:
return 0.0
else:
return sum(args)/len(args)
print (average())
print (average(1,2))
print (average(1,2,2,3,4))
2016-04-26
你的代碼在for循環那邊,去掉*號
def average(*args):
? ? i=0
? ? sum=0.0
? ? for x in args:
? ? ? ? sum=sum+x
? ? ? ? i=i+1
? ? if i==0:
? ? ? ? return sum
? ? else:
? ? ? ? return sum/i
print average()
print average(1,2)
print average(1,2,2,3,4)
2016-04-26
有點小毛病,看看我寫的對不對
def average(*args):
? ? i=0
? ? sum=0.0
? ? for x in args:
? ? ? ? sum=sum+x
? ? ? ? i=i+1
? ? if i==0:
? ? ? ? return sum
? ? else:
? ? ? ? return sum/i
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)