2013-08-31 3 views
0

У меня есть некоторые проблемы о словаре Здесь мой код:Некоторые проблемы о Python 2.x

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

Может кто-нибудь помочь?

+0

выложил ответ ниже. Возможно, вам захочется ознакомиться с тем, как форматировать код в вопросе SO, чтобы упростить его чтение (хотя я вижу, что Haedrian сделал это для вас сейчас ...) Кроме того, ваш заголовок не дает никаких указаний о том, что вопрос о , – knolleary

ответ

0

Проблема заключается в вашей average функции:

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

В этом цикле i устанавливается каждому значению в number массиве, а не индекс.

Ваш цикл может быть просто:

for i in number: 
    total = total + i 

Равным образом, это существо питон, а не for петли, вы могли бы просто использовать sum() функции:

def average(number): 
    return float(sum(number))/len(number)