/
timofnik
/
py-homeworks-basic-classes
Обзор
Документация
Войти
/
timofnik
/
py-homeworks-basic-classes
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
main.py
193 строки
5 KB
timofnik
Initial commit
16 июл 2026, 23:13
16 июл 2026, 23:13
fdd1c3b
Код
Авторство
О чём код?
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 ( isinstance(lecturer, Lecturer) and course in lecturer.courses_attached and course in self.courses_in_progress and 1 <= grade <= 10 ): if course in lecturer.grades: lecturer.grades[course] += [grade] else: lecturer.grades[course] = [grade] else: return 'Ошибка' def average_grade(self): total = 0 count = 0 for grades in self.grades.values(): total += sum(grades) count += len(grades) if count == 0: return 0 return total / count def __str__(self): return ( f"Имя: {self.name}\n" f"Фамилия: {self.surname}\n" f"Средняя оценка за домашние задания: {self.average_grade()}\n" f"Курсы в процессе изучения: {', '.join(self.courses_in_progress)}\n" f"Завершенные курсы: {', '.join(self.finished_courses)}" ) def __gt__(self, other): return self.average_grade() > other.average_grade() def __lt__(self, other): return self.average_grade() < other.average_grade() def __eq__(self, other): return self.average_grade() == other.average_grade() class Mentor: def __init__(self, name, surname): self.name = name self.surname = surname self.courses_attached = [] def __str__(self): return f"Имя: {self.name}\nФамилия: {self.surname}" class Lecturer(Mentor): def __init__(self, name, surname): super().__init__(name, surname) self.grades = {} def average_grade(self): total = 0 count = 0 for grades in self.grades.values(): total += sum(grades) count += len(grades) if count == 0: return 0 return total / count def __str__(self): return f"{super().__str__()}\nСредняя оценка за лекции: {self.average_grade()}" def __gt__(self, other): return self.average_grade() > other.average_grade() def __lt__(self, other): return self.average_grade() < other.average_grade() def __eq__(self, other): return self.average_grade() == other.average_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 avg_hw_grade(students, course): total = 0 count = 0 for student in students: if course in student.grades: total += sum(student.grades[course]) count += len(student.grades[course]) if count == 0: return 0 return total / count def avg_lecture_grade(lecturers, course): total = 0 count = 0 for lecturer in lecturers: if course in lecturer.grades: total += sum(lecturer.grades[course]) count += len(lecturer.grades[course]) if count == 0: return 0 return total / count 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)) print(student.rate_lecture(lecturer, 'Java', 8)) print(student.rate_lecture(lecturer, 'C++', 8)) print(student.rate_lecture(reviewer, 'Python', 6)) print(lecturer.grades) print(isinstance(lecturer, Mentor)) print(isinstance(reviewer, Mentor)) print(lecturer.courses_attached) print(reviewer.courses_attached) print(lecturer) print(reviewer) student2 = Student('Зубкова', 'Екатерина', 'Ж') student2.courses_in_progress += ['Python'] reviewer.rate_hw(student, 'Python', 8) reviewer.rate_hw(student2, 'Python', 10) print(student < student2) print(student > student2) print(student == student2) lecturer2 = Lecturer('Тимофеев', 'Дмитрий') lecturer2.courses_attached += ['Python'] student.rate_lecture(lecturer2, 'Python', 10) print(lecturer < lecturer2) print(lecturer > lecturer2) print(lecturer == lecturer2) reviewer2 = Reviewer('Сергей', 'Сергеев') reviewer2.courses_attached += ['Python'] reviewer2.rate_hw(student, 'Python', 9) reviewer2.rate_hw(student2, 'Python', 10) print(student) print(avg_hw_grade([student, student2], 'Python')) print(avg_lecture_grade([lecturer, lecturer2], 'Python'))