一个for循环,它不会超越python中的第一个项目

时间:2011-05-06 22:16:12

标签: python

我有这个简单的平均函数,当它运行测试数据时,会显示数据的长度,但是在计算实际平均值时,不会超出序列中的第一项。我需要帮助找到我在这里做错了什么。如果你这样做,请提前感谢您花时间回答。

def avg(seq):
    total = 0
    for i in seq:

        total+=i

        average = total/len(seq)
        return (float(average))

test_data = (12,89,90)
print(len(test_data))
print(avg(test_data))

3 个答案:

答案 0 :(得分:6)

这是错误的:

def avg(seq):
    total = 0
    for i in seq:
        total+=i
        average = total/len(seq)
        return (float(average))

这是对的:

def avg(seq):
    total = 0
    for i in seq:
        total += i
    average = total / len(seq)
    return average

或者,如果您尚未升级到3.x,

average = float(total) / len(seq)

答案 1 :(得分:1)

您可以考虑使用标准的python函数,

>>> seq = (12,89,90)
>>> sum(seq)
191
>>> float(sum(seq))/len(seq)
63.666666666666664

答案 2 :(得分:0)

当您在函数中返回时,它会完全退出该函数。将循环拉到函数外部,或者返回for循环外的元组/列表。