/
RecentFellowKid
/
OOP
Обзор
Документация
Войти
/
RecentFellowKid
/
OOP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
third_task.py
139 строк
4 KB
RecentFellowKid
Third task
11 авг 2025, 02:15
11 авг 2025, 02:15
6750e69
Код
Авторство
О чём код?
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_lecturer(self, lecturer, course, grade): if isinstance(lecturer, Lecturer) and \ course in self.courses_in_progress and \ course in lecturer.courses_attached and \ 1 <= grade <= 10: lecturer.grades.setdefault(course, []).append(grade) else: return 'Ошибка' def average_grade(self): all_grades = sum(self.grades.values(), []) return round(sum(all_grades) / len(all_grades), 1) if all_grades else 0 def __lt__(self, other): if not isinstance(other, Student): return NotImplemented return self.average_grade() < other.average_grade() def __eq__(self, other): if not isinstance(other, Student): return NotImplemented return self.average_grade() == other.average_grade() def __str__(self): avg = self.average_grade() current = ", ".join(self.courses_in_progress) finished = ", ".join(self.finished_courses) return ( f"Имя: {self.name}\n" f"Фамилия: {self.surname}\n" f"Средняя оценка за домашние задания: {avg}\n" f"Курсы в процессе изучения: {current}\n" f"Завершенные курсы: {finished}" ) class Mentor: def __init__(self, name, surname): self.name = name self.surname = surname self.courses_attached = [] class Lecturer(Mentor): def __init__(self, name, surname): super().__init__(name, surname) self.grades = {} def average_grade(self): all_grades = sum(self.grades.values(), []) return round(sum(all_grades) / len(all_grades), 1) if all_grades else 0 def __lt__(self, other): if not isinstance(other, Lecturer): return NotImplemented return self.average_grade() < other.average_grade() def __eq__(self, other): if not isinstance(other, Lecturer): return NotImplemented return self.average_grade() == other.average_grade() def __str__(self): avg = self.average_grade() return ( f"Имя: {self.name}\n" f"Фамилия: {self.surname}\n" f"Средняя оценка за лекции: {avg}" ) class Reviewer(Mentor): def __init__(self, name, surname): super().__init__(name, surname) def rate_hw(self, student, course, grade): if isinstance(student, Student) and \ course in self.courses_attached and \ course in student.courses_in_progress and \ 1 <= grade <= 10: student.grades.setdefault(course, []).append(grade) else: return 'Ошибка' def __str__(self): return ( f"Имя: {self.name}\n" f"Фамилия: {self.surname}" ) student1 = Student('Иван', 'Иванов', 'M') student1.courses_in_progress += ['Python'] student1.finished_courses += ['Введение в программирование'] student2 = Student('Пётр', 'Петров', 'M') student2.courses_in_progress += ['Python'] lecturer1 = Lecturer('Сергей', 'Сергеев') lecturer1.courses_attached += ['Python'] lecturer2 = Lecturer('Андрей', 'Андреев') lecturer2.courses_attached += ['Python'] reviewer = Reviewer('Константин', 'Константинов') reviewer.courses_attached += ['Python'] reviewer.rate_hw(student1, 'Python', 9) reviewer.rate_hw(student1, 'Python', 10) reviewer.rate_hw(student2, 'Python', 6) reviewer.rate_hw(student2, 'Python', 7) student1.rate_lecturer(lecturer1, 'Python', 8) student1.rate_lecturer(lecturer1, 'Python', 9) student2.rate_lecturer(lecturer2, 'Python', 6) student2.rate_lecturer(lecturer2, 'Python', 7) # Вывод print("Студенты:") print(student1, end="\n\n") print(student2, end="\n\n") print("Лекторы:") print(lecturer1, end="\n\n") print(lecturer2, end="\n\n") print("Эксперты:") print(reviewer, end="\n\n") print("Сравнение студентов:", student1 > student2) print("Сравнение лекторов:", lecturer1 > lecturer2)