Доброго времени суток
Нужно рассчитать оценки всех студентов каждой группы и вывести средний балл по каждой группе.
ЧТО ЕСТЬ В НАЛИЧИИ?
Есть функции подсчёта троек,четвёрок,пятёрок и среднего балла(Раньше это было всё в одной функции,но потом сказали,что некрасиво,разбивай на более мелкие).Они рабочие.
def counthrees(self):
counttri=0
for student in studinfos:
if student.markgeometry==3:
counttri+=1
if student.markalgebra==3:
counttri+=1
if student.markinformatika==3:
counttri+=1
#print("Количество 3-ек = ", counttri)
return counttri
def countfours(self):
countfour1=0
for student in studinfos:
if student.markgeometry==4:
countfour1+=1
if student.markalgebra==4:
countfour1+=1
if student.markinformatika==4:
countfour1+=1
if student.markgeometry==5:
counttri+=1
#print("Количество 4-рок = ", countfour1)
return coountfour1
def countfives(self):
countfive1=0
for student in studinfos:
if student.markgeometry==5:
countfive1+=1
if student.markalgebra==5:
countfive1+=1
if student.markinformatika==5:
countfive1+=1
#print("Количество 5-рок = ", countfive1)
return countfive1
def midbal(self):
return (counthrees()+countfours()+countfives())/3
Сама функция вывода вывода словаря с группами,студентами,оценками (но без подсчёта среднего балла успеваемости).Прикреплён результат работы программы.
def srtgr(self):
"""Номер группы в порядке убывания по успеваемости"""
gl=dict() #Словарь для распределения по группам
for s in studinfos:
sd=gl.pop(s.numbgroup,dict())
sd[s.surn]=[s.markgeometry,s.markalgebra,s.markinformatika]
gl[s.numbgroup]=sd
for k,v, in gl.items():
s=f'Group: {k}: \n'
for stdn,grds in v.items():
s+=f' {stdn}\t{grds[0]},{grds[1]},{grds[2]} \n'
print(s)
ЧТО ТРЕБУЕТСЯ?
Как сделать так,чтобы внизу после списка студентов каждой группы выводился средний бал?
Или просто подсчитать в каждой группе средний балл и занести в уже другой словарь?
Со сортировкой значений в словаре я-то разобрался.
Я пытался сделать 2-ой словарь и занести туда группы,а потом уже высчитывать отдельным блоком оценки - не получилось.
Потом почитал,что в Python можно добавить словарь в словаре.
В итоге я попытался добавить существующий словарь в новый,но не понял как дальше действовать.
Потому что оценки высчитывать надо в любом случае
Никаких вспомогательных классов использовать нельзя,работа только с одним классом.