Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Gradebook:
- def __init__(self):
- self.students = {}
- def get_best_exam_student(self, subject):
- semestr = sorted(self.students, key=lambda name: self.students[name].get(subject, {}).get('semestr', 0))
- return semestr[-1]
- def get_passed_exams(self):
- return set(subject for subjects in self.students.values() for subject in subjects)
- def print_result_grades(self):
- for name in self.students:
- print(name, ' '.join('{}-{}'.format(n, round(rate['exam']*.3 + rate['semestr']*.7))
- for n, rate in self.students[name].items()))
- # заполнить тест данными
- from random import randrange
- G = Gradebook()
- student_count = 3
- subjects_count = 4
- max_rate = 12
- _subjects = ['subject%s' % n for n in range(subjects_count)]
- for name in [('Name%s' % n, 'Surname%s' % n) for n in range(student_count)]:
- G.students[name] = student = {}
- for r in range(randrange(5)):
- subject = _subjects[randrange(subjects_count)]
- rate = dict(exam=randrange(max_rate), semestr=randrange(max_rate))
- student[subject] = rate
- print('n'.join(map(str, G.students.items())))
- # проверить
- print(G.get_best_exam_student('subject1'))
- print(G.get_passed_exams())
- G.print_result_grades()
- (('name-1', 'surname-1'), {'subject-1': [0, 1]})
- (('name-0', 'surname-0'), {'subject-0': [7, 0], 'subject-1': [2, 4], 'subject-3': [8, 10]})
- (('name-2', 'surname-2'), {'subject-0': [8, 8], 'subject-2': [2, 11], 'subject-3': [0, 10]})
- **********
- ('name-0', 'surname-0')
- **********
- {'subject-0', 'subject-2', 'subject-1', 'subject-3'}
- **********
- surname-1 subject-1=1
- surname-0 subject-0=2 subject-1=3 subject-3=9
- surname-2 subject-0=8 subject-2=8 subject-3=7
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement