Задание 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]