/
Argentovsky
/
Python_OOP
Обзор
Документация
Войти
/
Argentovsky
/
Python_OOP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
OOP_DS3.py
114 строк
4 KB
Argentovskii
Домашние задание 3
23 июн 2025, 17:32
23 июн 2025, 17:32
2444a1c
Код
Авторство
О чём код?
from functools import total_ordering @total_ordering 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, lecture, course, grade): if isinstance(lecture, Lecturer) and course in self.courses_in_progress and course in lecture.courses_attached: if course in lecture.grades: lecture.grades[course] += [grade] else: lecture.grades[course] = [grade] else: return 'Ошибка' def __str__(self): sum_rate=[] for i in self.grades.values(): sum_rate.append(sum(i)/len(i)) self.average_rate=int(sum(sum_rate)/len(sum_rate)) return f' Имя: {self.name} \n Фамилия: {self.surname} \n Средняя оценка: {self.average_rate} \n Курсы В процессе изучения: {self.courses_in_progress}\n Завершенные курсы: {self.finished_courses}' def __lt__(self, other): return self.average_rate < other.average_rate def __eq__(self, other): return self.average_rate == other.average_rate 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 __lt__(self, other): return self.average_rate < other.average_rate def __eq__(self, other): return self.average_rate == other.average_rate def __str__(self): sum_rate=[] for i in self.grades.values(): sum_rate.append(sum(i)/len(i)) self.average_rate=int(sum(sum_rate)/len(sum_rate)) return f' Имя: {self.name} \n Фамилия: {self.surname} \n Средняя оценка: {self.average_rate} \n' class Reviewer(Mentor): def __init__(self, name, surname): super().__init__(name, surname) def rate_student(self, student, course, grade): if isinstance(student, Student) and course in self.courses_attached and course in student.courses_in_progress: if course in student.grades: student.grades[course] += [grade] else: student.grades[course] = [grade] else: return 'Ошибка' def __str__(self): return f' Имя: {self.name} \n Фамилия: {self.surname} \n' lecturer = Lecturer('Иван', 'Иванов') lecturer2 = Lecturer('Дмитрий', 'Николаевич') reviewer = Reviewer('Пётр', 'Петров') student = Student('Алёхина', 'Ольга', 'Ж') student.courses_in_progress += ['Python', 'Java', 'C++'] student.finished_courses+=['Введение в программирование'] lecturer.courses_attached += ['Python', 'C++'] lecturer2.courses_attached += ['Python', 'Введение в программирование'] reviewer.courses_attached += ['Python', 'C++'] student.rate_lecture(lecturer, 'Python', 7) # None student.rate_lecture(lecturer, 'Python', 6) student.rate_lecture(lecturer, 'Python', 9) student.rate_lecture(lecturer, 'C++', 4) student.rate_lecture(lecturer, 'C++', 8) student.rate_lecture(lecturer, 'Java', 8) # Ошибка student.rate_lecture(lecturer, 'С++', 8) # Ошибка student.rate_lecture(reviewer, 'Python', 6) # Ошибка reviewer.rate_student(student, 'Python', 9) # None reviewer.rate_student(student, 'Python', 7) # None student.rate_lecture(lecturer2, 'Python', 10) student.rate_lecture(lecturer2, 'Введение в программирование', 10) some_reviewer=str(reviewer) some_lecturer=str(lecturer) some_lecturer2=str(lecturer2) some_student=str(student) print(some_reviewer) print(some_lecturer) print(some_lecturer2) print(some_student) print(lecturer<lecturer2)