求大神们帮忙看看,我这个哪里有问题。。 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)
def average(*args): sum = 0.0 if len(args) == 0: return sum for x in args: sum = sum + x return sum / len(args) print average() print average(1, 2) print average(1, 2, 2, 3, 4)
首先, *args 接受不定数量的参数, 在函数中调用的时候,不用星号(*)了, 在函数中调用的时候 args 就是传入的参数 组成的 元组(tuple).
其次, 有了 len(args) , 就不用另外定义i 并且自加1 了。
最后,为了防止 发生 除0 的错误,进入函数后,第一时间判断参数长度。
所以, 根据上面三条,理解下正确答案。
有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))
你的代码在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)
有点小毛病,看看我写的对不对
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)