Генераторы и итераторы · 14 из 16
Приём по рации
Сан Саныч ходит по цеху с рацией и диктует вес каждого увезённого лотка. На том конце сидит приёмщик: услышал число — прибавил к своему итогу и тут же сказал в ответ, сколько стало всего. Никакого списка он не ведёт, в голове у него одно число.
Что сделать
Сыграйте приёмщика на том конце рации — услышал вес, прибавил и назвал итог.
Что приходит
Ничего: функция зовётся без аргументов.
Что вернуть
Генератор-приёмщик: первый next отдаёт 0; send(вес) прибавляет вес к итогу и отдаёт новый итог; next без веса отдаёт итог как есть.
Допишите функцию priyomshchik в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Запустили — next(priyom) отдаёт 0. Передали 400 — в ответ 400, потом 350 — в ответ 750. Ответ образца — (0, [400, 750]).
priyom = priyomshchik() nachalo = next(priyom) otvety = [priyom.send(400), priyom.send(350)]
(nachalo, otvety)
(0, [400, 750])
Функция без аргументов. Возвращает генератор-приёмщик.
Приёмщика сначала запускают: первый «next» отдаёт ноль — итог, пока ничего не принято. Дальше ему передают вес через «send», и в ответ он отдаёт итог с учётом этого веса. Принимать можно сколько угодно раз, приёмщик не заканчивается. Ноль прибавляется как обычное число, итог при этом не меняется. Пустой запрос — «next» без веса — итог не меняет и отдаёт его же: в рацию сказали «приём», а числа не назвали.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.