Генераторы и итераторы · 15 из 16
Закрыть смену
Смена открывается записью в журнале и закрывается такой же записью. Закрыть её надо в любом случае: кончились ли буханки, увели ли ленту на ремонт посреди ночи, ушёл ли мастер, не дочитав. Журнал без записи о закрытии — повод для разбирательства утром.
Что сделать
Открывайте и закрывайте смену в журнале — закрывайте в любом случае, даже если ленту увели посреди ночи.
Что приходит
zhurnal— список строк журнала; функция дописывает в негоbuhanki— поток буханок
Что вернуть
Генератор: при первой выдаче пишет в журнал «смена открыта», отдаёт буханки по одной, а при любом конце — обычном, досрочном, с ошибкой — пишет «смена закрыта».
Допишите функцию smena в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
zhurnal = [] vydano = list(smena(zhurnal, ["бородинский", "батон"]))
(vydano, zhurnal)
(['бородинский', 'батон'], ['смена открыта', 'смена закрыта'])
Функция принимает журнал (список строк) и поток буханок.
При первой же выдаче дописывает в журнал строку «смена открыта». Дальше отдаёт буханки по одной. Когда выдача заканчивается — как бы она ни закончилась: буханки вышли, генератор закрыли досрочно, внутри случилась ошибка, — в журнал дописывается строка «смена закрыта». Пока у генератора не попросили первое значение, в журнале не появляется ничего.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.