2013-09-28 266 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函數之前關閉大括號。