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

来源:7-7 Python之定义可变参数

飘神丶

2016-04-26 09:29

求大神们帮忙看看,我这个哪里有问题。。 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回答

  • 清波
    2016-04-26 10:17:56
    已采纳
    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 的错误,进入函数后,第一时间判断参数长度。

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

    飘神丶

    非常感谢!

    2016-04-26 23:20:43

    共 1 条回复 >

  • 岳阳白少
    2016-10-07 21:55:14

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


  • lhtfreedom
    2016-04-26 10:16:03

    你的代码在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 23:21:52

    共 1 条回复 >

  • agusuyan57
    2016-04-26 10:04:09

    有点小毛病,看看我写的对不对

    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 23:21:39

    共 1 条回复 >

初识Python

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

758282 学习 · 8967 问题

查看课程