赢得';在python中,不能超过第一项

赢得';在python中,不能超过第一项,python,Python,我有一个简单的平均值函数,当它与测试数据一起运行时,将显示数据的长度,但在计算实际平均值时,不会超出序列中的第一项。我需要帮助来找出我做错了什么。如果您愿意,请提前感谢您抽出时间回答 def avg(seq): total = 0 for i in seq: total+=i average = total/len(seq) return (float(average)) test_data = (12,89,90) prin

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

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))
这是错误的:

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)

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

您可以考虑改用标准python函数

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

丹尼尔,我很感谢你的建议,但如果我在这里做什么,我想知道。因为我的代码产生了这种奇怪的输出。