/
kristinkaandreeva2002
/
py-homeworks-basic
Обзор
Документация
Войти
/
kristinkaandreeva2002
/
py-homeworks-basic
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task2.py
104 строки
4 KB
kristinkaandreeva2002
update task2.py
19 янв 2026, 14:39
Верифицирован
19 янв 2026, 14:39
5aa7144
Код
Авторство
О чём код?
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): # Проверяем, что передан лектор, студент записан на курс, # лектор ведет этот курс и оценка от 1 до 10 if (isinstance(lecturer, Lecturer) and course in self.courses_in_progress and course in lecturer.courses_attached and 1 <= grade <= 10): if hasattr(lecturer, 'grades'): if course in lecturer.grades: lecturer.grades[course] += [grade] else: lecturer.grades[course] = [grade] else: lecturer.grades = {course: [grade]} return None # Успешно 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 = {} # Словарь для хранения оценок от студентов class Reviewer(Mentor): def __init__(self, name, surname): super().__init__(name, surname) def rate_hw(self, student, course, grade): # Метод выставления оценок студентам остался только у Reviewer 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] return None # Успешно else: return 'Ошибка' # Проверка из условия 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)) # None print(student.rate_lecture(lecturer, 'Java', 8)) # Ошибка print(student.rate_lecture(lecturer, 'C++', 8)) # Ошибка print(student.rate_lecture(reviewer, 'Python', 6)) # Ошибка print(lecturer.grades) # {'Python': [7]} # Дополнительная проверка print("\n--- Дополнительная проверка ---") # Проверяем выставление оценок студентам (только Reviewer может это делать) best_student = Student('Ruoy', 'Eman', 'your_gender') best_student.courses_in_progress += ['Python'] print(reviewer.rate_hw(best_student, 'Python', 10)) # None print(reviewer.rate_hw(best_student, 'C++', 9)) # Ошибка (студент не записан на C++) print(reviewer.rate_hw(lecturer, 'Python', 8)) # Ошибка (не студент) print(best_student.grades) # {'Python': [10]} # Проверяем несколько оценок одному лектору student2 = Student('Иван', 'Петров', 'М') student2.courses_in_progress += ['Python'] student.rate_lecture(lecturer, 'Python', 9) # Еще одна оценка за Python student2.rate_lecture(lecturer, 'Python', 8) # И еще одна от другого студента print(lecturer.grades) # {'Python': [7, 9, 8]} # Проверяем некорректные оценки print(student.rate_lecture(lecturer, 'Python', 11)) # Ошибка (оценка > 10) print(student.rate_lecture(lecturer, 'Python', 0)) # Ошибка (оценка < 1)