Part of the Whole 8/9 with formatting


#1

I asked this question but when it was posted it lost it’s formatting. I am posting again and hopefully the formatting will remain so indentations are clear.

print get_class_grade(lloyd) returns the letter A
print get_average(alice) returns 91.15, the expected value.
The error message I receive states:

get_class_average([alice]) returned 80.55 instead of 91.15 as expected. Not sure how to proceed.
Thank you


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

def get_average(student):
  homework = average(student['homework'])*0.1
  quizzes = average(student['quizzes'])*0.3
  tests = average(student['tests'])*0.6
  total_average = homework+quizzes+tests
  return total_average

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(lloyd) 
print get_average(alice)

def get_class_average(class_list):
  class_list = [lloyd, alice, tyler]
  results = []
  for student in class_list:
    results.append(get_average(student))
    return average(results)

#2

there are two mayor problems, you overwrite the function parameter, why? This makes your function really inflexible. We can just supply arguments at function call, by doing this, we can make the function work for a class of any size (1, 2 or 3 students, or even more if we would add those)

by default, a function returns none at the end of the function. If we want to return something else at the end of the function, we can use the return keyword. Thus, when the return keyword is reached, the function ends.

So, your function ends in the first iteration of your loop. Which is not really nice if you have 3 students

for format see here:

you used the wrong characters/symbols for formatting


#3

Thanks so much. That was very helpful. I get it now.
Regards,
Coco


#4

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