Ошибки и исключения · 14 из 21
Двое на одно время
Дело о лишнем часе. К терапевту на «02:30» записаны двое — Петров и Сидорова, и оба придут. Так быть не должно: программа регистратуры обязана отказать второму. Но отказ «False» никто не читает. Тамара Ивановна хочет ошибку, по которой сразу видно, к кому, на сколько и кто занял место.
Что сделать
Запишите пациента в расписание, а на занятое место поднимите своё исключение DvoynayaZapis с подробностями.
Что приходит
raspisanie— словарь: пара(врач, время)→ фамилия записанногоvrachиvremya— к кому и на какое время записать,"терапевт","02:30"familiya— кого
Что вернуть
Новое расписание с этой записью — исходное не меняется; место занято — исключение DvoynayaZapis.
Допишите функцию zapisat в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
zapisat({}, "терапевт", "02:30", "Петров")
{('терапевт', '02:30'): 'Петров'}
Заведите класс исключения DvoynayaZapis — наследника ValueError (неверное значение: время занято). Его конструктор принимает vrach, vremya, kto_uzhe, kto_novyy и сохраняет их в одноимённых полях. Текст исключения — str(e) — ровно по шаблону f"{vrach}, {vremya}: место занято ({kto_uzhe}), отказано: {kto_novyy}", например: терапевт, 02:30: место занято (Петров), отказано: Сидорова.
zapisat возвращает новый словарь — копию с добавленной записью; переданный не меняется. Если пара (vrach, vremya) уже есть — raise DvoynayaZapis(vrach, vremya, кто там, familiya).
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.