Экзамен модуля 02: конструктор предложения¶
Формат¶
Время — 120–150 минут. Разрешены собственные заметки и официальная документация. Нельзя копировать практику с заменой заголовка: экзамен добавляет изменение количества, удаление позиции и отдельную сортировку.
Задание¶
Создайте quote_builder.py. Программа хранит строки будущего коммерческого предложения в памяти и поддерживает меню:
1 — добавить строку
2 — изменить количество
3 — удалить строку
4 — найти по коду
5 — найти по названию
6 — показать предложение
7 — показать итог
0 — выйти
Модель строки¶
Код нормализуется так же, как артикул в практике: удаляются пробелы и применяется верхний регистр. Повторный код добавлять нельзя.
Функциональные требования¶
- добавление проверяет непустые строки и неотрицательные числа;
- изменение количества ищет точный нормализованный код;
- удаление требует найденного кода и не падает при отсутствии позиции;
- поиск по коду выполняет точное сравнение после нормализации;
- поиск по названию принимает непустой фрагмент и не зависит от регистра;
- предложение выводится в алфавитном порядке названий;
- итог содержит число строк, количество единиц и общую стоимость;
- расчёты и операции над каталогом отделены от
inputиprint; - после каждой операции меню продолжает работать до команды
0.
Обязательные функции¶
Должно быть не менее семи осмысленных функций, включая:
- нормализацию кода;
- точный поиск по коду;
- поиск по части названия;
- добавление без дублей;
- изменение количества;
- удаление;
- расчёт итогов.
Не считайте функцию осмысленной, если она лишь переименовывает один print и не выделяет отдельное правило.
Контрольные данные¶
| Код | Название | Количество | Цена | Стоимость |
|---|---|---|---|---|
CAB100 |
Кабель силовой | 10 | 250.00 | 2500.00 |
TRAY20 |
Лоток 200 мм | 4 | 980.00 | 3920.00 |
BOX5 |
Коробка монтажная | 3 | 120.00 | 360.00 |
BOARD1 |
Шкаф распределительный | 1 | 18500.00 | 18500.00 |
Первый ожидаемый итог: 4 строки, 18 единиц, 25 280 рублей.
Затем выполните операции:
- измените количество
TRAY20с 4 на 6; - удалите
BOX5; - найдите названия по запросу
кабель; - попробуйте добавить дубль
cab 100.
Второй ожидаемый итог: 3 строки, 17 единиц, 26 880 рублей. Поиск находит одну строку, дубль отклоняется.
Ошибочные сценарии¶
- пустой код и пустое название;
- буквенная цена;
- отрицательное количество;
- изменение и удаление отсутствующего кода;
- пустой поисковый запрос;
- неизвестная команда меню.
Ни один сценарий не должен завершать программу необработанной трассировкой.
Что сдаётся¶
quote_builder.py;- README с командой запуска, структурой записи и ограничением «данные не сохраняются»;
- таблица ожиданий и фактов для контрольных операций;
- объяснение одной ошибки, связанной с изменяемым списком или словарём.
Оценивание¶
| Критерий | Баллы |
|---|---|
| Список словарей имеет стабильную структуру | 2 |
| Добавление, изменение и удаление корректны | 2 |
| Поиск и нормализация соответствуют правилам | 2 |
| Оба итога совпадают с контрольными числами | 2 |
| Интерфейс переживает ошибочный ввод | 1 |
| Автор объясняет мутацию, копию и сортировку | 1 |
Зачёт — не менее 8 из 10 баллов. Корректность второго итога и отсутствие необработанной трассировки обязательны.