我在一个学习网站照着敲代码 ,有两端代码我看了好多遍都没差别。。

第一段

def average(*args):
    sum = 0.0
    if len(args) == 0:
        return sum
    for x in args:
        sum = sum + x
        return sum / len(args)

第二段

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

第一段调用结果

我在一个学习网站照着敲代码  ,有两端代码我看了好多遍都没差别。。

第二段调用结果

我在一个学习网站照着敲代码  ,有两端代码我看了好多遍都没差别。。

@李山河

JeffLi
pardon110
最佳答案

很明显在无实参的情况下,它们的表现结果一样,都是0.0。但是有参数的情况下,第一段代码,始终是用第一个实参值除以参数个数,求商。而第二段代码,则是求多个参数和的平均值。区别在于,第一个段在进行一次循环后就直接跳出了。而第二段则不然。你需要关注的是,python代码是通过缩进规范作用域

3周前 评论
讨论数量: 2
pardon110

很明显在无实参的情况下,它们的表现结果一样,都是0.0。但是有参数的情况下,第一段代码,始终是用第一个实参值除以参数个数,求商。而第二段代码,则是求多个参数和的平均值。区别在于,第一个段在进行一次循环后就直接跳出了。而第二段则不然。你需要关注的是,python代码是通过缩进规范作用域

3周前 评论

第一个写错了,缩进错误,在第一次循环那就跳出去了

2周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!