Генераторы и итераторы · 12 из 16
Датчик, который дрожит
Кружок собрал метеостанцию, и её датчик выдаёт числа, которые прыгают сами по себе: шум. Аркадий Семёнович предлагает смотреть не на каждое число, а на среднее нескольких последних — дрожь сгладится, а настоящий ход температуры останется. Датчик шлёт числа без конца, поэтому копить их все нельзя.
Что сделать
Сгладьте дрожь датчика метеостанции — смотрите на среднее нескольких последних чисел.
Что приходит
potok— поток чисел с датчика; бывает бесконечнымshirina— сколько последних значений усреднять, целое больше нуля
Что вернуть
Генератор: на каждое новое значение отдаёт среднее последних shirina, начиная с момента, когда окно набралось; в памяти — только окно.
Допишите функцию sglazhivanie в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Ширина 3, поток 1, 2, 3, 4, 5. На третьем значении окно набралось — среднее 2.0; дальше 3.0 и 4.0: [2.0, 3.0, 4.0].
list(sglazhivanie([1, 2, 3, 4, 5], 3))
[2.0, 3.0, 4.0]
Функция принимает поток чисел и ширину окна (целое больше нуля). Отдаёт через yield среднее последних «ширина» значений — по одному на каждое новое значение, начиная с того, на котором окно впервые набралось целиком. Если значений меньше ширины, не отдаётся ничего. В памяти держится только окно, а не весь поток: значения из потока забираются по мере того, как просят средние.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.