Part of the Whole


#1

Hello. I got stumped at “part of the whole”, I don’t really understand what I’m doing wrong. I’m getting “get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected” error. My code is:

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

Part of Code
#2

a function ends the moment a return keyword is reached

so your function ends in the first iteration of the loop, but to get the correct class average for two or more students, the loop need to make all its iterations

so return should be placed outside/after the loop


#3

thank you very much.


#4