📝 Практические задания

⚡ Задания в двух словах

  1. Создать класс Student с именем и датой рождения, проверить возраст ≥ 16.
  2. Добавить автоинкремент student_id.
  3. Добавить строковое представление.
  4. Добавить метод show_info с текущим возрастом.
  5. Реализовать альтернативный конструктор from_string.
  6. Добавить метод calculate_age_on для возраста на конкретную дату.
  7. Реализовать статический метод filter_by_min_age.
  8. Проверить работу класса: создать студентов, поймать ошибку, отфильтровать.

Задание 1. Класс Student

Условие: создайте класс Student, представляющий студента.

  • У каждого объекта должно быть имя и дата рождения.
  • Дата передаётся как строка YYYY-MM-DD и сохраняется в виде объекта datetime.date.
  • Добавьте проверку возраста — студенту должно быть не менее 16 лет, иначе выбрасывается ValueError.

Что должно получиться: объект Student, который корректно хранит дату и отклоняет слишком молодых.

Задание 2. Номер студента

Условие: каждому студенту должен автоматически присваиваться уникальный номер student_id, начиная с 1.

Что должно получиться: у первого созданного студента ID = 1, у второго — 2 и так далее.

Задание 3. Строковое представление

Условие: добавьте строковое представление объекта.

Пример вывода:

Student: Alice, birth_date: 2005-05-10, ID: 1

Задание 4. Карточка студента

Условие: добавьте метод, который выводит информацию о студенте на текущий момент. Возраст вычисляется автоматически на основе даты рождения.

Пример вывода:

Student:
Name: Alice
Age: 19
ID: 1

Задание 5. Альтернативный конструктор

Условие: реализуйте метод, позволяющий создавать объект из строки формата:

"Bob, 2001-12-03"

Что должно получиться: вызов Student.from_string("Bob, 2001-12-03") создаёт объект с именем Bob и датой рождения 2001-12-03.

Задание 6. Возраст на конкретную дату

Условие: добавьте возможность получить возраст студента на переданную дату.

Что должно получиться: метод calculate_age_on(target_date) возвращает целое число лет.

Задание 7. Фильтрация студентов по возрасту

Условие: реализуйте способ отобрать из списка студентов только тех, кто старше определённого возраста.

Что должно получиться: метод filter_by_min_age(students, min_age) возвращает список подходящих студентов.

Задание 8. Проверка работы класса

Условие:

  • Создайте нескольких студентов разными способами.
  • Выведите информацию о каждом.
  • Попробуйте передать некорректную дату и отловите исключение.
  • Получите список студентов старше указанного возраста.

Пример вывода:

Student: Alice, birth_date: 2005-05-10, ID: 1
Student:
Name: Alice
Age: 19
ID: 1
Student: Bob, birth_date: 2001-12-03, ID: 2
Student:
Name: Bob
Age: 23
ID: 2
Min age 21: [Student: Bob, birth_date: 2001-12-03, ID: 2]

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Что важнее всего в практическом задании?

Вопрос 2

Как безопаснее двигаться в практикуме?

Вопрос 3

Что делать, если решение не совпадает с ожидаемым результатом?

Вопрос 4

Какой стиль имён переменных обычно рекомендует PEP 8?

Вопрос 5

Зачем использовать f-strings в современном Python?

Вопрос 6

Когда полезен ранний возврат из функции?