Вычисление среднего
Столкнулась с проблемой с "вычислением среднего" Пожалуйста подскажите как тут реализовать данное вычисление.
#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}]