Перейти к содержанию

Экзамен модуля 02: конструктор предложения

Формат

Время — 120–150 минут. Разрешены собственные заметки и официальная документация. Нельзя копировать практику с заменой заголовка: экзамен добавляет изменение количества, удаление позиции и отдельную сортировку.

Задание

Создайте quote_builder.py. Программа хранит строки будущего коммерческого предложения в памяти и поддерживает меню:

1 — добавить строку
2 — изменить количество
3 — удалить строку
4 — найти по коду
5 — найти по названию
6 — показать предложение
7 — показать итог
0 — выйти

Модель строки

line = {
    "code": "CAB100",
    "name": "Кабель силовой",
    "quantity": 10,
    "unit_price": 250.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 рублей.

Затем выполните операции:

  1. измените количество TRAY20 с 4 на 6;
  2. удалите BOX5;
  3. найдите названия по запросу кабель;
  4. попробуйте добавить дубль cab 100.

Второй ожидаемый итог: 3 строки, 17 единиц, 26 880 рублей. Поиск находит одну строку, дубль отклоняется.

Ошибочные сценарии

  • пустой код и пустое название;
  • буквенная цена;
  • отрицательное количество;
  • изменение и удаление отсутствующего кода;
  • пустой поисковый запрос;
  • неизвестная команда меню.

Ни один сценарий не должен завершать программу необработанной трассировкой.

Что сдаётся

  • quote_builder.py;
  • README с командой запуска, структурой записи и ограничением «данные не сохраняются»;
  • таблица ожиданий и фактов для контрольных операций;
  • объяснение одной ошибки, связанной с изменяемым списком или словарём.

Оценивание

Критерий Баллы
Список словарей имеет стабильную структуру 2
Добавление, изменение и удаление корректны 2
Поиск и нормализация соответствуют правилам 2
Оба итога совпадают с контрольными числами 2
Интерфейс переживает ошибочный ввод 1
Автор объясняет мутацию, копию и сортировку 1

Зачёт — не менее 8 из 10 баллов. Корректность второго итога и отсутствие необработанной трассировки обязательны.

← Практика · К семестру 01