🏠 Домашнее задание

⚡ Суть задания

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

Результат: рабочие скрипты для всех четырёх задач с проверкой в VS Code.

📋 Примечание

В исходных материалах Практикума 15 отдельное домашнее задание не указано. Ниже приведены дополнительные упражнения для закрепления темы.

Упражнение 1. Расширьте отчёт по оценкам

Модифицируйте решение задачи 1 так, чтобы программа:

  • Пропускала записи с некорректной датой и выводила предупреждение.
  • Добавляла в отчёт общий средний балл ученика по всем предметам.
  • Сохраняла результат в файл grades_quarterly_report.json.

Упражнение 2. Валидация по алгоритму Луна

Для задачи 4 (номера банковских карт) добавьте проверку по алгоритму Луна. Сохраните в отдельный файл только те номера, которые прошли проверку.

Проверить по документации: алгоритм Луна — стандартная проверка контрольной цифры платёжных карт. Описание можно найти в Википедии и документации платёжных систем.

Упражнение 3. Генератор для больших файлов

Перепишите задачу 2 (немецкие номера) с использованием генератора, который читает файл построчно, а не целиком. Это полезно, если исходный файл занимает сотни мегабайт.

Упражнение 4. Проверка email с учётом доменов

Доработайте задачу 3: программа должна принимать список разрешённых доменов верхнего уровня (например, ["com", "org", "net"]) и выводить только адреса с этими TLD.

🔧 Подготовка окружения

  1. Создайте папку python-fundamentals-practice/lesson-61/.
  2. Создайте в ней файлы grades.json, german_numbers.txt, emails.txt, cards.txt с тестовыми данными.
  3. Напишите скрипты task_01_grades.py, task_02_phones.py, task_03_emails.py, task_04_cards.py.
  4. Запустите каждый скрипт в VS Code и проверьте вывод.

🧪 Как проверить решение

  1. Активируйте venv: venv\Scripts\activate (Windows) или source venv/bin/activate (Mac/Linux).
  2. Запустите скрипты: python task_01_grades.py и т.д.
  3. Убедитесь, что выходные файлы созданы и содержат ожидаемые данные.
  4. Проверьте, что программы корректно обрабатывают ошибки (отсутствующий файл, некорректную дату).