为了账号安全,请及时绑定邮箱和手机立即绑定

如果元组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)

正在回答

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 的错误,进入函数后,第一时间判断参数长度。

所以, 根据上面三条,理解下正确答案。

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

飘神丶 提问者

非常感谢!
2016-04-26 回复 有任何疑惑可以回复我~

有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))


0 回复 有任何疑惑可以回复我~

你的代码在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)


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

飘神丶 提问者

十分感谢,我发现我的错误了!
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)


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

飘神丶 提问者

非常谢谢,我发现我的错误了
2016-04-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

如果元组tuple为空,那么循环for x in args这个语句有效么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信