7/9 why doesn't this way work?


#1

Using this code, I was able to get the right output, which is “B”.

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"])
  score = 0.1 * homework + 0.3 * quizzes + 0.6 * tests
  return score

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

when I changed the latter part to

print get_letter_grade(lloyd)

the output was A.

Why is this? I assumed both would be the same. By only using the function {get_letter_grade}, you would still have to make use of the {score} variable, even if we’re not using the {get_average} function.


#2

These lines added to end of source code…

print (get_letter_grade(get_average(lloyd)))

print (get_letter_grade(lloyd))

Note the first result, and the second.

=========== RESTART: D:/cc/discuss/users/jsy-c/student-teacher.py ===========
B
Traceback (most recent call last):
  File "D:/cc/discuss/users/jsy-c/student-teacher.py", line 48, in <module>
    print (get_letter_grade(lloyd))
  File "D:/cc/discuss/users/jsy-c/student-teacher.py", line 35, in get_letter_grade
    if score >= 90:
TypeError: unorderable types: dict() >= int()
>>> 

#3

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