/
netogithubik
/
Neto_OOP
Обзор
Документация
Войти
/
netogithubik
/
Neto_OOP
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
3.py
114 строк
3 KB
rskuro
rewrote the get_average_grade function using list comprehension and brought it out as a separate function
27 янв 2026, 19:44
27 янв 2026, 19:44
a1f3610
Код
Авторство
О чём код?
def get_average_grade(student_or_lecturer): average_list = [grade for key in student_or_lecturer.grades for grade in student_or_lecturer.grades[key]] if len(average_list) > 0: return sum(average_list) / len(average_list) else: return 0 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 get_average_grade(self): return get_average_grade(self) def __str__(self): return f"""Имя: {self.name} Фамилия: {self.surname} Средняя оценка за домашние задания: {self.get_average_grade()} Курсы в процессе изучения: {", ".join(self.courses_in_progress)} Завершенные курсы: {", ".join(self.finished_courses)}""" def __gt__(self, other): if isinstance(other, Student): self_g = self.get_average_grade() other_g = other.get_average_grade() return self_g > other_g else: return NotImplemented def __eq__(self, other): if isinstance(other, Student): self_g = self.get_average_grade() other_g = other.get_average_grade() return self_g == other_g def rate_lecture(self, lecturer, course_name, rate): if ( isinstance(lecturer, Lecturer) and course_name in lecturer.courses_attached and rate > 0 and rate <= 10 and course_name in self.courses_in_progress ): if course_name in lecturer.grades: lecturer.grades[course_name] += [rate] else: lecturer.grades[course_name] = [rate] else: return "Ошибка" 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 get_average_grade(self): return get_average_grade(self) def __str__(self): return f"""Имя: {self.name} Фамилия: {self.surname} Средняя оценка за лекции: {self.get_average_grade()}""" def __gt__(self, other): if isinstance(other, Lecturer): self_g = self.get_average_grade() other_g = other.get_average_grade() return self_g > other_g else: return NotImplemented def __eq__(self, other): if isinstance(other, Lecturer): self_g = self.get_average_grade() other_g = other.get_average_grade() return self_g == other_g class Reviewer(Mentor): def __str__(self): return f"""Имя: {self.name} Фамилия: {self.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 0 < grade <= 10 ): if course in student.grades: student.grades[course] += [grade] else: student.grades[course] = [grade] else: return "Ошибка" s1 = Student("x","xx","xxx") s2 = Mentor("zz","zzz") print(s1>s2)