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

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)

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

def average(numbers):
total = sum(numbers)
total = float(total)
total = total / len(numbers)

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

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

def average(numbers):
total = sum(numbers)

total = float(total) / len(numbers)

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

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