0

私は辞書についていくつかの問題を抱えていますここに私のコード:

tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
}


def average (number):
    total = 0.0
    for i in number:
        total = total + number[i]
    return total/ len(number)

def get_average(student):
        return average(student["homework"])*0.1 + average(student["quizzes"])*0.3 + average(student["tests"])*0.6

print get_average(tyler)

エラー: TypeError: list indices must be integers, not float

誰でも助けることができますか?

4

1 に答える 1

0

問題はあなたのaverage機能にあります:

for i in number:
    total = total + number[i]

このループでは、インデックスではなく、配列i内の各値に設定されます。number

ループは次のようになります。

for i in number:
    total = total + i

同様に、これはループではなく python であるため、次の関数forを使用できます。sum()

def average(number):
    return float(sum(number))/len(number)
于 2013-08-31T08:46:07.150 に答える