Напишите класс Geom(база, знаменатель), задающий геометрическую прогрессию, нумерация членов которой идёт с нуля. Сконструированный объект — бесконечная вычислимая последовательность, поддерживающая итерацию, индексирование и секционирование (в том числе конструкции с умолчаниями). Дополнительно должно поддерживаться секционирование вида прогрессия[начало, ..., конец], что соответствует конструкции прогрессия[начало:конец], причём параметр «начало ,» и/или «, конец» можно опускать (бесконечные прогрессия[начало, ....] и прогрессия[...]; и конечная прогрессия[..., конец]). Индексирование должно возвращать соответствующий член прогрессии, а секционирование — последовательность членов (возможно, бесконечную). Конструкция прогрессия[::отрицательный шаг] возвращает пустую последовательность. Известно, что база и знаменатель однотипны (проверять не надо), того же типа должны быть и члены последовательности.

g = Geom(3, 2)
print(*zip("012345", g))
print(*g[:6])
print(*g[10::-2])
print(*zip(g[...], "0123"))
print(*g[3, ..., 11])

('0', 3) ('1', 6) ('2', 12) ('3', 24) ('4', 48) ('5', 96)
3 6 12 24 48 96
3072 768 192 48 12 3
(3, '0') (6, '1') (12, '2') (24, '3')
24 48 96 192 384 768 1536 3072


CategoryHomework

LecturesCMC/PythonIntro2023/Homework_GeomProgr (последним исправлял пользователь FrBrGeorge 2023-11-03 16:30:34)