📝 Задания: покупка, логирование, статистика, модули
⚡ Кратко
Семь практических заданий: от покупки книги до рефакторинга программы в модули.
📝 Задание 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
Когда полезен ранний возврат из функции?