Incorrect class average 8/9


#1

Student becomes the teacher 8/9

I am getting an incorrect class average of 83.87 instead of 91.15. Can anyone point out where the mistake is in my code?


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 = float(sum(numbers)) 
  return total / len(numbers)
  

def get_average(student):
  homework = float(average(student['homework']))
  quizzes = float(average(student['quizzes']))
  tests = float(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'

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

students = [lloyd, alice, tyler]

print get_class_average(students)


#2

Hi @apseddon,

Here, you have specified class_list as a function parameter …

def get_class_average(class_list):

Within the function, use that name in this for loop header, instead of referring to the global variable, students

  for student in students:

#3

Great, thanks for the help!


#4