Генераторы и итераторы · 11 из 16
Пока влезает в машину
Хлебовозку грузят прямо с ленты, пока не упрётся в грузоподъёмность. На буханке, которая уже не влезла, погрузка заканчивается: дальше по ленте никто не смотрит, машина едет. Водителю нужна накладная: что погрузили и сколько стало весить после каждой буханки.
Что сделать
Грузите хлебовозку с ленты, пока не упрётесь в грузоподъёмность, — и сразу составляйте накладную.
Что приходит
potok— поток весов буханокgruzopodyomnost— сколько выдержит машина
Что вернуть
Генератор: отдаёт пары (вес буханки, общий вес) на каждую погруженную; на первой, что не влезла, выдача кончается, и поток дальше не трогается.
Допишите функцию do_polnogo в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
Машина на 1000, буханки по 400. Первая — (400, 400), вторая — (400, 800), третья дала бы 1200: погрузка окончена.
list(do_polnogo([400, 400, 400], 1000))
[(400, 400), (400, 800)]
Функция принимает поток весов буханок (целые) и грузоподъёмность. Отдаёт пары «вес буханки и общий вес после погрузки» — по паре на каждую погруженную буханку. Как только очередная буханка не влезает, выдача заканчивается: сама эта буханка не отдаётся, следующие не рассматриваются, поток дальше не трогается. Если не влезла даже первая буханка, не отдаётся ничего.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.