Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. class Gradebook:
  2. def __init__(self):
  3. self.students = {}
  4.  
  5. def get_best_exam_student(self, subject):
  6. semestr = sorted(self.students, key=lambda name: self.students[name].get(subject, {}).get('semestr', 0))
  7. return semestr[-1]
  8.  
  9. def get_passed_exams(self):
  10. return set(subject for subjects in self.students.values() for subject in subjects)
  11.  
  12. def print_result_grades(self):
  13. for name in self.students:
  14. print(name, ' '.join('{}-{}'.format(n, round(rate['exam']*.3 + rate['semestr']*.7))
  15. for n, rate in self.students[name].items()))
  16.  
  17. # заполнить тест данными
  18. from random import randrange
  19. G = Gradebook()
  20. student_count = 3
  21. subjects_count = 4
  22. max_rate = 12
  23. _subjects = ['subject%s' % n for n in range(subjects_count)]
  24. for name in [('Name%s' % n, 'Surname%s' % n) for n in range(student_count)]:
  25. G.students[name] = student = {}
  26. for r in range(randrange(5)):
  27. subject = _subjects[randrange(subjects_count)]
  28. rate = dict(exam=randrange(max_rate), semestr=randrange(max_rate))
  29. student[subject] = rate
  30. print('n'.join(map(str, G.students.items())))
  31.  
  32. # проверить
  33. print(G.get_best_exam_student('subject1'))
  34. print(G.get_passed_exams())
  35. G.print_result_grades()
  36.  
  37. (('name-1', 'surname-1'), {'subject-1': [0, 1]})
  38. (('name-0', 'surname-0'), {'subject-0': [7, 0], 'subject-1': [2, 4], 'subject-3': [8, 10]})
  39. (('name-2', 'surname-2'), {'subject-0': [8, 8], 'subject-2': [2, 11], 'subject-3': [0, 10]})
  40. **********
  41. ('name-0', 'surname-0')
  42. **********
  43. {'subject-0', 'subject-2', 'subject-1', 'subject-3'}
  44. **********
  45. surname-1 subject-1=1
  46. surname-0 subject-0=2 subject-1=3 subject-3=9
  47. surname-2 subject-0=8 subject-2=8 subject-3=7
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement