0
student = {'first_name': 'Bob', 'last_name': 'Barker',
               'assignments': [('assignment1', 75), ('assignment2', 100), ('assignment3', 47), ('assignment4', 97)]}
    
    
def average_grade(student):
    grade = sum(student['assignments']) / len(student['assignments'])
    print(grade)
    
average_grade(student)

I am trying to average the values of the assignments but I am completely stuck!

TheCodeLab
  • 39
  • 2
  • 8

2 Answers2

3

The problem is that you're trying to sum tuples instead of the integer values of the grades.

A possible solution:

def average_grade(student):
  sum_of_assignments = sum(assignment[1] for assignment in student['assignments'])
  num_of_assignments = len(student['assignments'])
  grade = sum_of_assignments / num_of_assignments
  print(grade)

average_grade(student)
# 2.0
adamgy
  • 4,543
  • 3
  • 16
  • 31
2

The problem is that you are trying to sum your assignments i.e. tuples rather than just the grades of the assignments. Try this:

student = {'id': 1, 'first_name': 'Bob', 'last_name': 'Barker',
           'assignments': [('assignment1', 0), ('assignment2', 2), ('assignment3', 4)]}


def average_grade(student):
    assignment_grades = [assignment[1] for assignment in student['assignments']]
    grade = sum(assignment_grades) / len(student['assignments'])
    print(grade)


average_grade(student)
Lukas S
  • 3,212
  • 2
  • 13
  • 25