Найти - Пользователи
Полная версия: Помогите решить задачи
Начало » Python для новичков » Помогите решить задачи
1
kashapovin
Всем привет.
Прошу помочь с решением задачи.

Исходные данные.
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 = {}
class Mentor:
def __init__(self, name, surname):
self.name = name
self.surname = surname
self.courses_attached =
def rate_hw(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 +=
else:
student.grades =
else:
return ‘Ошибка’
best_student = Student('Ruoy', ‘Eman’, ‘your_gender’)
best_student.courses_in_progress +=
cool_mentor = Mentor('Some', ‘Buddy’)
cool_mentor.courses_attached +=
cool_mentor.rate_hw(best_student, ‘Python’, 10)
cool_mentor.rate_hw(best_student, ‘Python’, 10)
cool_mentor.rate_hw(best_student, ‘Python’, 10)
print(best_student.grades)

Задание № 1. Наследование​
У нас уже есть класс преподавателей и класс студентов. Студентов пока оставим без изменения, а вот преподаватели бывают разные, поэтому теперь класс Mentor должен стать родительским классом, а от него нужно реализовать наследование классов Lecturer (лекторы) и Reviewer (эксперты, проверяющие домашние задания). Очевидно, имя, фамилия и список закрепленных курсов логично реализовать на уровне родительского класса.

Задание № 2. Атрибуты и взаимодействие классов.​
Реализовать возможность только Reviewer выставлять оценки студентам за домашние задания! А что могут делать лекторы? Получать оценки за лекции от студентов Реализуйте метод выставления оценок лекторам у класса Student (оценки по 10-балльной шкале, хранятся в атрибуте-словаре у Lecturer, в котором ключи – названия курсов, а значения – списки оценок). Лектор при этом должен быть закреплен за тем курсом, на который записан студент.

Задание № 3. Полиморфизм и магические методы​
Перегрузите магический метод __str__ у всех классов.
У проверяющих он должен выводить информацию в следующем виде:

print(some_reviewer)
Имя: Some
Фамилия: Buddy
У лекторов:

print(some_lecturer)
Имя: Some
Фамилия: Buddy
Средняя оценка за лекции: 9.9
А у студентов так:

print(some_student)
Имя: Ruoy
Фамилия: Eman
Средняя оценка за домашние задания: 9.9
Курсы в процессе изучения: Python, Git
Завершенные курсы: Введение в программирование
Реализуйте возможность сравнивать (через операторы сравнения) между собой лекторов по средней оценке за лекции и студентов по средней оценке за домашние задания.
Задание № 4. Полевые испытания​
Создайте по 2 экземпляра каждого класса, вызовите все созданные методы, а также реализуйте две функции:

для подсчета средней оценки за домашние задания по всем студентам в рамках конкретного курса (в качестве аргументов принимаем список студентов и название курса);
для подсчета средней оценки за лекции всех лекторов в рамках курса (в качестве аргумента принимаем список лекторов и название курса).
py.user.next
Что даст этот курс? Если ты не знаешь основ программирования, зачем тебе его проходить? Ведь это всё равно что младенец стал бы проходить курс по теории какой-нибудь высшей математики типа матанализа. Где он применит потом этот матанализ, даже если хоть что-то уловит, если круг его интересов лежит максимум в песочнице в детском саду и куличиках в ней?

kashapovin
Завершенные курсы: Введение в программирование
Ты даже код не можешь на форум правильно отправить. Тут теги code защищают о редактирования текста движком форума, и это является лакмусовой бумажкой, показывающей уровень того, кто пришёл с вопросом.

Вот в этом фрагменте ты даже не заметил не то что отступы исчезнувшие, а то что после равно всё постиралось. Ты даже не прочитал то, что ты сюда отправил.
kashapovin
  
if course in student.grades:
student.grades +=
else:
student.grades =
else:
return 'Ошибка'
Оно стёрлось, а ты даже не понял этого. Это говорит о твоём уровне. Он не достиг той высоты, чтобы проходить этот курс по “ООП”, в котором от ООП одно лишь название.
kashapovin
Благодарю за комментарий.
Не заметил, что информация частично загрузилась.
Курс как раз раз и прохожу курс Python c нуля в котором даются основы, а ООП является частью данного курса. И да, ООП и основы Python для меня пока только название, т.к. прохожу курс с начала апреля 2022.

Успехов
py.user.next
kashapovin
И да, ООП и основы Python для меня пока только название, т.к. прохожу курс с начала апреля 2022.
Я имею в виду, что и для создателя этого курса “ООП” - это только название. ООП вообще начинается с разложения информационной системы, которую ты проектируешь, на абстракции и механизмы. Потом это дело, когда оно появилось и приняло отчётливую форму, переводится на объекты и классы, работаешь в этих понятиях. Объекты начинают представлять и выражать абстракции, а операции одних объектов над другими начинают представлять и выражать механизмы, классы при этом являются большими объединениями одинаковых объектов. Дальше строится иерархия классов с одним корневым классом, от которого происходят классы потомки. Эта иерархия классов создаёт прочность программы, всё работает как одно целое и ничто не болтается нигде скраю как не пришей кобыле хвост. Система удерживает саму себя. Как человеческий организм удерживается и не распадается сам по себе, в том числе и при ходьбе.
Вот это ООП.

А вот это вот “давайте изучим полиморфизм, переопределите магические методы” - это для чего? (Автор ещё и не ориентируется, использует термин “перегрузите метод”, в то время как в питоне нет перегрузки, есть только переопределение.) Вот ты написал это, а куда это присобачить-то потом, если у тебя объектной модели нет никакой и ты не знаешь даже, что ты, собственно, пытаешься реализовать. Ты просто не знаешь, что ты делаешь, а он тебе предлагает “делай это не знаешь что и дальше, перегружай методы!”.

Потом будешь ходить и говорить всем “я знаю шаблоны ООП!”, а для чего они тебе, ты даже знать не будешь, потому что никакого ООП у тебя нет, одно название только.

kashapovin
Курс как раз раз и прохожу курс Python c нуля в котором даются основы, а ООП является частью данного курса.
ООП - это не для новичков. Это дополнение к обычному структурному программированию. Добавление этой парадигмы придаёт мощи проектируемым программам. Если же ты будешь проходить подобные курсы, где бабки выкалачивают просто всякими льстивыми уроками “ой! как у вас всё хорошо получается! вы очень способны!”. Кстати, педагогического образования у этих “преподавателей” этих школ нет практически никогда; они даже не знают, что такое план урока, что для объяснения материала у доски нужна обычная деревянная длинная указка, потому что не видно ничего и преподаватель доску загораживает, когда что-то там пальцем пытается показать или говорит “ну, вон, та вот буква A, видите? возле буквы B которая?” - какие-то такие моменты примитивные они не знают. Ну и результат этого “обучения” такой же смешной. А именно никакой. Их ученики как приходят нулями, так и уходят нулями. Опустошается только кошелёк немного. Много нельзя, а то все убегут на такой же курс подешевле у кого-нибудь другого, такого же припадоватиля. Так что, что ты там проходишь, не знаю даже. Что это даст?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB