/
Kotov_Nikolay
/
netology_python
Обзор
Документация
Войти
/
Kotov_Nikolay
/
netology_python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
oop_task3.py
162 строки
5 KB
Kotov Nikolay
renamed
02 янв 2026, 19:45
02 янв 2026, 19:45
c9060da
Код
Авторство
О чём код?
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, lector, course, rate): if (isinstance(lector, Lecturer) and course in self.courses_in_progress and course in lector.courses_attached and 1 <= rate <= 10): if course in lector.grades: lector.grades[course] += [rate] else: lector.grades[course] = [rate] else: return 'Ошибка' def median_grade(self): if not self.grades: return ('0.0') all_grades = [] for grade_list in self.grades.values(): for grade in grade_list: all_grades.append(grade) median_grade = sum(all_grades) / len(all_grades) return '{:.1f}'.format(median_grade) def __str__(self): return (f'Имя: {self.name}\n' f'Фамилия: {self.surname}\n' f'Средняя оценка за домашние задания: {self.median_grade()}\n' f'Курсы в процессе изучения: {", ".join(self.courses_in_progress)}\n' f'Завершенные курсы: {", ".join(self.finished_courses)}') def __eq__(self, other): return self.median_grade() == other.median_grade() def __gt__(self, other): return self.median_grade() > other.median_grade() 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 __str__(self): return (f'Имя: {self.name}\n' f'Фамилия: {self.surname}\n' f'Средняя оценка за лекции: {self.median_grade()}') def __eq__(self, other): return self.median_grade() == other.median_grade() def __gt__(self, other): return self.median_grade() > other.median_grade() def median_grade(self): if not self.grades: return ('0.0') all_grades = [] for grade_list in self.grades.values(): for grade in grade_list: all_grades.append(grade) median_grade = sum(all_grades) / len(all_grades) return '{:.1f}'.format(median_grade) 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): if course in student.grades: student.grades[course] += [grade] else: student.grades[course] = [grade] else: return 'Ошибка' def __str__(self): return (f'Имя: {self.name}\n' f'Фамилия: {self.surname}') def lecturer = Lecturer('Иван', 'Иванов') lecturer1 = Lecturer('Николай', 'Котов') reviewer = Reviewer('Пётр', 'Петров') reviewer1 = Reviewer('Денис', 'Воробьёв') student = Student('Алёхина', 'Ольга', 'Ж') student1 = Student('Иван', 'Котов', 'М') student2 = Student('Максим', 'Котов', 'М') student.courses_in_progress += ['Python', 'Java'] student1.courses_in_progress += ['Python', 'C++', 'Java'] student2.courses_in_progress += ['C++'] lecturer.courses_attached += ['Python', 'C++'] lecturer1.courses_attached += ['Java'] reviewer.courses_attached += ['Python', 'C++'] reviewer1.courses_attached += ['Java'] student.rate_lecture(lecturer, 'Python', 7) student.rate_lecture(lecturer1, 'Java', 9) student1.rate_lecture(lecturer1, 'Java', 10) student1.rate_lecture(lecturer, 'Python', 8) student1.rate_lecture(lecturer, 'C++', 7) student2.rate_lecture(lecturer, 'C++', 8) reviewer.rate_hw(student, 'Python', 8) reviewer.rate_hw(student, 'Python', 7) reviewer.rate_hw(student, 'Python', 9) reviewer1.rate_hw(student, 'Java', 7) reviewer1.rate_hw(student, 'Java', 9) reviewer1.rate_hw(student, 'Java', 10) reviewer.rate_hw(student1, 'Python', 8) reviewer.rate_hw(student1, 'Python', 9) reviewer.rate_hw(student1, 'Python', 11) reviewer.rate_hw(student1, 'C++', 10) reviewer.rate_hw(student1, 'C++', 8) reviewer1.rate_hw(student1, 'Java', 5) reviewer1.rate_hw(student1, 'Java', 3) reviewer1.rate_hw(student1, 'Java', 10) reviewer.rate_hw(student2, 'C++', 10) reviewer.rate_hw(student2, 'C++', 7) print(f'Студенты') print(student) print(student1) print(student2) print() print(f'Лекторы') print(lecturer) print(lecturer1) print() print(f'Проверяющие') print(reviewer) print(reviewer1) print() print(student1 > student2) print() print(lecturer < lecturer1)