Ошибки и исключения · 12 из 13
Запись с откатом
Задействованы также: Списки, Словари
Семью записывают на приём вместе или не записывают вовсе: если для кого-то не хватило места, остальных тоже снимают — иначе половина придёт, а половина нет.
Что сделать
Запишите семью на приём вместе — или не записывайте никого.
Что приходит
mesta— словарь «час → сколько свободных мест»; при удаче его функция и меняетzayavki— список пар(имя, час)predel— сколько раз можно записать одного человека
Что вернуть
Если записать можно всех — имена в порядке записи, а места в mesta уменьшены; если хоть одну нельзя — None, и mesta не тронут.
Допишите функцию zapisat_gruppu в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Мест в 9 — два, в 10 — одно. Иванов и Иванова оба на 9: записаны оба, ответ ["Иванов", "Иванова"], мест в 9 стало 0. Будь в 9 одно место, Иванову не хватило бы — и Иванова тоже снимают: None, места прежние.
mesta = {9: 2, 10: 1}
(zapisat_gruppu(mesta, [('Иванов', 9), ('Иванова', 9)], 2), mesta)
(['Иванов', 'Иванова'], {9: 0, 10: 1})
Функция принимает: словарь «час — число свободных мест» (целые), список пар (имя, час) и максимум записей на человека (целое). Пытается записать всех по очереди. Запись невозможна, если в этом часу нет мест, такого часа нет в расписании или человек уже записан столько раз, сколько разрешено. Если хоть одна запись не удалась, никто не записывается: функция возвращает None, а словарь мест остаётся нетронутым. Если удались все, возвращает список имён в порядке записи, а места в словаре уменьшаются.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.