Problem with mission 8 "part of the whole"


#1

it 03. they ask to get average from class list, but the problem is: there is no list called "class".
and another imporant thing: class turns purple, what means its a used as a command.
how am I supposed to solve this? what is the answer?
this is my current code: (I changed the code so It'll be students instead of class,but it returns an error)

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

# Add your function below!
def average(numbers):
    total = sum(numbers)
    return float(total)/len(numbers)
    
def get_average(student):
    homework = average(student['homework'])
    quizzes = average(student['quizzes'])
    tests = average(student['tests'])
    return (homework*0.1)+(quizzes*0.3)+(tests*0.6)
    
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 students
        results.append(get_average(student))
        return average(results)

when i save that I get : File "python", line 46
for student in students
^
SyntaxError: invalid syntax


#2

Try this. Worked for me.

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

# Add your function below!
def average(numbers):
    total = sum(numbers)
    total = float(total)
    total = total / len(numbers)
    return total

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

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 each in students:
        results.append(get_average(each))
    return average(results)

#3

Our get average functions are a lot different.

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

#4

I am having a similar issue, but I get the following error:

Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected

Its like it is only looking at 2 of the 3 students from the list the we can "expect" to exist?

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

# Add your function below!
def average(numbers):
    total = sum(numbers)
    
    total = float(total) / len(numbers)
    return total
    
def get_average(student):
    homework = 0.1 * average(student["homework"])
    quizzes = 0.3 * average(student["quizzes"])
    tests = 0.6 * average(student["tests"])
    return  homework + quizzes + 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"

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

#5

Hi try it like that

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

`


#6

That did the trick, I was returning within the for loop! Still getting the hang of the tab syntax! Thanks.


#7

shakedst

You are missing a : at the end of your loop.

for student in students should be for student in students:

Also, as I have learned, make sure you don't return the average(results) within the loop!


#8

ur error was that u didnt put a colon, it is supposed to be

for student in students:

but u wrote incorectly:

for student in students

#9

omg thanks you!!! I didn't see that ):
im so dumb. Yesterday I tried to figure my mistakes for like 20 mins )::
stupid colon
thank you so much!


#10

no problem, and don't curse, i flagged you for ur curse, let this be a warning for u, do not curse again, this is supposed to be a safe, clean, healthy learning community. And trash talk definitely contributes to undo those goals and ideals.


#11

ok sry. I just was so angry for wasting so much time only because of this colon