-
Notifications
You must be signed in to change notification settings - Fork 154
Description
class Student:
def init(self, name, surname, gender):
self.name = name
self.surname = surname
self.gender = gender
self.finished_courses = []
self.courses_in_progress = []
self.grades = {}
def rate_lecture(self, lecturer, course, grade):
# Проверяем, что оцениваемый является лектором
if not isinstance(lecturer, Lecturer):
return "Ошибка: можно оценивать только лекторов"
# Проверяем, что студент записан на этот курс
if course not in self.courses_in_progress:
return "Ошибка: студент не записан на этот курс"
# Проверяем, что лектор ведет этот курс
if course not in lecturer.courses_attached:
return "Ошибка: лектор не ведет этот курс"
# Проверяем корректность оценки
if not (0 <= grade <= 10):
return "Ошибка: оценка должна быть от 0 до 10"
# Добавляем оценку лектору
if course not in lecturer.grades:
lecturer.grades[course] = []
lecturer.grades[course].append(grade)
return None
class Lecturer:
def init(self, name, surname):
self.name = name
self.surname = surname
self.courses_attached = []
self.grades = {}
class Reviewer:
def init(self, name, surname):
self.name = name
self.surname = surname
self.courses_attached = []
def rate_hw(self, student, course, grade):
# Проверяем, что ревьюер прикреплен к курсу
if course not in self.courses_attached:
return "Ошибка: ревьюер не прикреплен к этому курсу"
# Проверяем, что студент изучает этот курс
if course not in student.courses_in_progress:
return "Ошибка: студент не изучает этот курс"
# Добавляем оценку студенту
if course not in student.grades:
student.grades[course] = []
student.grades[course].append(grade)
return None
Тестирование системы
lecturer = Lecturer('Иван', 'Иванов')
reviewer = Reviewer('Пётр', 'Петров')
student = Student('Алёхина', 'Ольга', 'Ж')
student.courses_in_progress += ['Python', 'Java']
lecturer.courses_attached += ['Python', 'C++']
reviewer.courses_attached += ['Python', 'C++']
print(student.rate_lecture(lecturer, 'Python', 7)) # None - успешно
print(student.rate_lecture(lecturer, 'Java', 8)) # Ошибка: лектор не ведет этот курс
print(student.rate_lecture(lecturer, 'C++', 8)) # Ошибка: студент не записан на этот курс
print(student.rate_lecture(reviewer, 'Python', 6)) # Ошибка: можно оценивать только лекторов
print(lecturer.grades) # {'Python': [7]}