如果元組tuple為空,那么循環(huán)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 接受不定數(shù)量的參數(shù), 在函數(shù)中調(diào)用的時候,不用星號(*)了, 在函數(shù)中調(diào)用的時候 args 就是傳入的參數(shù) 組成的 元組(tuple).
其次, 有了 len(args) , 就不用另外定義i 并且自加1 了。?
最后,為了防止 發(fā)生 除0 的錯誤,進(jìn)入函數(shù)后,第一時間判斷參數(shù)長度。
所以, 根據(jù)上面三條,理解下正確答案。
2016-10-07
有sum函數(shù)為什么不用,還非得循環(huán)?
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循環(huán)那邊,去掉*號
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)