Part of the Whole


#1



I'm stuck with Part of the Whole exercise.

File "python", line 20
class = [lloyd, alice, tyler]
^
SyntaxError: invalid syntax


it should calculate the average of the class. I had to create list of students called class in order for it work, but somehow my list is wrong? I mean it's just a list, what is wrong with it???


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]
}

class = [lloyd, alice, tyler]

# Add your function below!

def average(numbers):
    total = sum(numbers)
    total = float(total)
    return total / len(numbers)
    
def get_average(student):
    homework = average(student["homework"])
    quizzes = average(student["quizzes"])
    tests = average(student["tests"])
    return 0.1 * homework + 0.3 * quizzes + 0.6 * tests
    
def get_letter_grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >=70:
        return "C"
    elif score>= 60:
        return "D"
    else:
        return "F"
        
print get_letter_grade(get_average(lloyd))


def get_class_average(students):
    results=[]
    for student in class:
        results.append(get_average(student))
    return average(results)


#2

You can see the colour change in text in the code you posted. class is a keyword in Python just like list. It is used to initiate classes (which will be taught later on) so you can't really use that to name lists. Try another name (Don't use student or students as this will cause issues).

You don't have class as a parameter in the function. Do you mean to use students instead? Don't overwrite parameters.


#3

Thank you! I fixed it.


#4

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.