Вычисление среднего

Столкнулась с проблемой с "вычислением среднего" Пожалуйста подскажите как тут реализовать данное вычисление.

#coding:utf-8
groupmates = [
{
"name": u"Василий",
"group": "912-2",
"age": 19,
"marks": [4, 3, 5, 5, 4]
},
{
"name": u"Анна",
"group": "912-1",
"age": 18,
"marks": [3, 2, 3, 4, 3]
},
{
"name": u"Георгий",
"group": "912-2",
"age": 19,
"marks": [3, 5, 4, 3, 5]
},
{
"name": u"Валентина",
"group": "912-1",
"age": 18,
"marks": [5, 5, 5, 4, 5]
}
]
def print_students(students):
    print u"Имя студента".ljust(15), \
        u"Группа".ljust(8), \
        u"Возраст".ljust(8), \
        u"Оценки".ljust(20)
    for student in students:
        print student["name"].ljust(15), \
            student["group"].ljust(8), \
            str(student["age"]).ljust(8), \
            str(student["marks"]).ljust(20)
    print "\n"

print_students(groupmates)
 
bal = float(input("Sredniy ball: "))#функция для ввода данных с клавиатуры
def print_students(students):
    print u"Имя студента".ljust(15), \
            u"Группа".ljust(8), \
            u"Возраст".ljust(8), \
            u"Оценки".ljust(20)
    for student in students:
            sr = float(sum(num)) / max(len(num), 1) #вычисление среднего
            if sr >= bal: 
                print student["name"].ljust(15), \
                    student["group"].ljust(8), \
                    str(student["age"]).ljust(8), \
                    str(student["marks"]).ljust(20)
    print "\n"

print_students(groupmates)

Ответы (2 шт):

Автор решения: gil9red

Попробуйте:

# -*- coding: utf-8 -*-

groupmates = [
    {
        "name": u"Василий",
        "group": "912-2",
        "age": 19,
        "marks": [4, 3, 5, 5, 4]
    },
    {
        "name": u"Анна",
        "group": "912-1",
        "age": 18,
        "marks": [3, 2, 3, 4, 3]
    },
    {
        "name": u"Георгий",
        "group": "912-2",
        "age": 19,
        "marks": [3, 5, 4, 3, 5]
    },
    {
        "name": u"Валентина",
        "group": "912-1",
        "age": 18,
        "marks": [5, 5, 5, 4, 5]
    }
]

print u"Имя студента".ljust(15),\
      u"Группа".ljust(8),\
      u"Возраст".ljust(8),\
      u"Оценки".ljust(20),\
      u"Средний балл".ljust(5)
for student in groupmates:
    mean = sum(student["marks"]) / len(student["marks"])
    print student["name"].ljust(15),\
          student["group"].ljust(8),\
          str(student["age"]).ljust(8),\
          str(student["marks"]).ljust(20),\
          str(mean).ljust(5)

Результат:

Имя студента    Группа   Возраст  Оценки               Средний балл
Василий         912-2    19       [4, 3, 5, 5, 4]      4
Анна            912-1    18       [3, 2, 3, 4, 3]      3 
Георгий         912-2    19       [3, 5, 4, 3, 5]      4
Валентина       912-1    18       [5, 5, 5, 4, 5]      4 
→ Ссылка
Автор решения: Jack_oS

Для добавления средней оценки по каждому студенту можно добавить ее в элементы списка (с округлением до второй цифры после запятой):

for student in groupmates:
  marks = student['marks']
  student.update({"marks_avg": round(sum(marks)/len(marks), 2)})

В результате groupmates примет следующий вид:

>>> groupmates
[{'name': 'Василий', 'group': '912-2', 'age': 19, 'marks': [4, 3, 5, 5, 4], 'marks_avg': 4.2}, {'name': 'Анна', 'group': '912-1', 'age': 18, 'marks': [3, 2, 3, 4, 3], 'marks_avg': 3.0}, {'name': 'Георгий', 'group': '912-2', 'age': 19, 'marks': [3, 5, 4, 3, 5], 'marks_avg': 4.0}, {'name': 'Валентина', 'group': '912-1', 'age': 18, 'marks': [5, 5, 5, 4, 5], 'marks_avg': 4.8}]
→ Ссылка