Войти Создать аккаунт

Генераторы и итераторы · 7 из 16

Пульсы печи

В ночную смену на хлебозаводе меняют плату управления печью. Плата берёт из программы поток значений, по одному на каждый такт: заслонка ходит меандром — открыто или закрыто, лента конвейера — пилой, медленно вперёд и разом назад, вентилятор — треугольником. Пока новую плату не привезли, наладчик проверяет программу на стенде, и ему нужен источник таких сигналов — бесконечный, по значению на такт.

Что сделать

Напишите генератор, который бесконечно выдаёт сигнал нужного вида — пилу, меандр или треугольник — по значению на такт.

Что приходит

  • vid — вид сигнала: "pila", "meandr" или "treugolnik"

  • period — через сколько тактов сигнал повторяется

  • amplituda — наибольшее значение сигнала

Что вернуть

Генератор: каждый next даёт значение следующего такта, округлённое до тысячных, — и так без конца.

Допишите функцию signal в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой

Пример

Пила с периодом 4 и амплитудой 8 растёт на четверть амплитуды за такт и обрывается в ноль: 0, 2, 4, 6, 0, 2, 4, 6… Десять первых значений — [0.0, 2.0, 4.0, 6.0, 0.0, 2.0, 4.0, 6.0, 0.0, 2.0].

Тот же пример кодом
Перед вызовом
g = signal("pila", 4, 8)
Вызов
[next(g) for _ in range(10)]
Вернуть
[0.0, 2.0, 4.0, 6.0, 0.0, 2.0, 4.0, 6.0, 0.0, 2.0]
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.