📝 Задания: покупка, логирование, статистика, модули

📁 Блок: Практикум / Базы данных ⏱️ Время изучения: ~120 мин 🎯 Сложность: Средняя
#lower #find #sort

⚡ Кратко

Семь практических заданий: от покупки книги до рефакторинга программы в модули.

📝 Задание 1. Просмотр книг в наличии

Реализуйте функцию view_available_books(connection), которая:

  • выбирает книги с остатком больше 0;
  • выводит порядковый номер, название, автора, цену и остаток;
  • сообщает No books available., если книг нет.

📝 Задание 2. Поиск по названию

Реализуйте search_books_by_title(connection):

  • пользователь вводит часть названия;
  • поиск регистронезависимый;
  • показываются только книги в наличии;
  • если ничего не найдено — No matching books found.

📝 Задание 3. Покупка книги

Реализуйте purchase_book(connection, user_id):

  • показать список доступных книг с номерами;
  • пользователь вводит номер книги и количество;
  • если книг недостаточно — Not enough books in stock.;
  • если денег недостаточно — Insufficient funds.;
  • при успехе списать остаток и баланс, вывести Purchase successful.

📝 Задание 4. Таблица purchases

Создайте таблицу purchases с внешними ключами к users и books. После каждой успешной покупки добавляйте в неё запись с user_id, book_id, quantity и текущей датой.

📝 Задание 5. Логирование поисков в MongoDB

Добавьте сохранение каждого поискового запроса в коллекцию bookstore_logs_searches базы ich_edit. Документ должен иметь вид {"query": "введённый текст"}.

📝 Задание 6. Анализ популярных запросов

Реализуйте пункт меню «Most frequent search queries». Выведите топ-10 запросов в порядке убывания частоты. Реализуйте сначала через Counter, а затем повторите через MongoDB aggregation.

📝 Задание 7. Разделение на модули ⭐

Разбейте программу на файлы по рекомендуемой структуре:

  • main.py — главное меню и запуск.
  • db_setup.py — создание базы и таблиц.
  • auth.py — регистрация и вход.
  • book_importer.py — загрузка книг из CSV.
  • user_actions.py — просмотр, поиск, покупка.
  • search_logs.py — MongoDB: логирование и аналитика.

Убедитесь, что приложение запускается из main.py и не выполняет лишнего при импорте модулей.

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

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

Вопрос 1

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

Вопрос 2

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

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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