2013-09-28 267 views
0

我正在从Code Academy处理这个问题,我想要的代码是分别为每个学生返回测试,测验和作业平均值。Codeacademy:平均值

这就是我现在的代码。

它说这个错误消息“无效的语法”等等。

lloyd = { 
    "name": "Lloyd", 
    "homework": [90.0, 97.0, 75.0, 92.0], 
    "quizzes": [88.0, 40.0, 94.0], 
    "tests": [75.0, 90.0] 
} 
alice = { 
    "name": "Alice", 
    "homework": [100.0, 92.0, 98.0, 100.0], 
    "quizzes": [82.0, 83.0, 91.0], 
    "tests": [89.0, 97.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(some): 
    return sum(some)/len(some) 

students = [lloyd, alice, tyler] 
def get_class_average(students): 
    for student in students: 
     total += get_average(student) 
    return float(total)/len(students) 
+0

回溯告诉你行号 –

+0

-1因为缺乏努力。 –

回答

1

看样子你错过了花前

def average... 

应该

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

此外,在get_average_class你不说什么get_average是。我认为这是使用average,你已经省略,但如果你的意思是平均比你有问题。

2

你打电话给get_average()(我假设你的意思是average()这里)与字典,而不是一个列表。因此sum()将无法​​使用它。为了获得实际的作业或测验或测试列表,你必须做total += get_average(student['homework'])

您还在tyler字典后缺少}。这将使python认为def average位是字典的一部分,但它不可能是,因此是错误。

0
lloyd = { 
    "name": "Lloyd", 
    "homework": [90.0, 97.0, 75.0, 92.0], 
    "quizzes": [88.0, 40.0, 94.0], 
    "tests": [75.0, 90.0] 
} 
alice = { 
    "name": "Alice", 
    "homework": [100.0, 92.0, 98.0, 100.0], 
    "quizzes": [82.0, 83.0, 91.0], 
    "tests": [89.0, 97.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(some): 
    return sum(some)/len(some) 

students = [lloyd, alice, tyler] 
def get_class_average(students): 
    for student in students: 
     total += get_average(student) 
    return float(total)/len(students) 
0

忘记在average函数之前关闭大括号。