# How is Everybody Doing? -print get_class_average(students) error

#1

Hi, I let code academy type the code up for me this time, and I tried running it in the python shell window, and keep running into the error “syntax invalid”, but it only tells me its a problem with the end line: print get_class_average(students)

Here’s the code:

data
``````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]
}
``````
logic
``````def average(numbers):
total = sum(numbers)
total = float(total)

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

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(class_list):
results = []
for student in class_list:
student_avg = get_average(student)
results.append(student_avg)
return average(results)

students = [lloyd, alice, tyler]

print get_class_average(students)
``````

#2

Given the error you report it would indicate you are running Python 3. The current curriculum is Python 2. However, if you wrap the argument to `print`, above, in parens it will be valid in both worlds.

#3

Thank you, that did solve the problem to why it was not running.
I now have another issue:

lloyd = {#Defining the student group average for 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):#Function for calculating student grades
total = sum(numbers)
total = float(total)

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

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(class_list):
results = []
for student in class_list:
student_avg = get_average(student)
results.append(student_avg)
return average(results)

students = [lloyd, alice, tyler]

print (get_class_average(students))

I am trying to get the grade A-F to print below the get_class_average and it keeps giving me different errors on how I word it. How can I get it to display the correct letter grade?

#4

The function expects a dictionary, not a list; that means only sending one student at a time as opposed to the whole student list.

#5

I’m trying to get it to print the class average as a whole. What would be the appropriate code to place there?

#6

If you want a letter grade for the whole class, then pass the class average to the letter grade function as a value.

#7

Can you give me an example on how to pass it?

#8

It keeps giving this error in my PythonShell window:

Traceback (most recent call last):
File “C:/Users/Platypus/Desktop/Programming Assignment 6.py”, line 64, in
File “C:/Users/Platypus/Desktop/Programming Assignment 6.py”, line 42, in get_letter_grade
if score >= 90:
TypeError: ‘>=’ not supported between instances of ‘list’ and ‘int’

#9

It’s right there. You are getting the class average, but only printing it. Capture it first, then print as the final step, is how you solve this.

``````class_average = get_class_average(students)

#10

Oh I see, It works now, I was just missing how to type it in. Sorry, long day. Thank you so much.

#11

It’s not the typing, it’s the thinking. We have to think in this language to speak it.

#12

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