Введение
В математике геометрическая прогрессия - это последовательность чисел, в которой каждое следующее число получается путём умножения предыдущего на фиксированное ненулевое число, называемое знаменателем прогрессии. В этом испытании вы создадите функцию, которая инициализирует список, содержащий числа в указанном диапазоне, где start и end включаются, а отношение между двумя последовательными числами равно step.
Геометрическая прогрессия
Напишите функцию под названием geometric_progression, которая принимает три параметра:
end: целое число, представляющее конец диапазона (включительно)start: необязательное целое число, представляющее начало диапазона (включительно), со значением по умолчанию1step: необязательное целое число, представляющее знаменатель прогрессии между двумя последовательными числами, со значением по умолчанию2
Функция должна возвращать список, содержащий числа в указанном диапазоне, где отношение между двумя последовательными числами равно step. Список должен начинаться с start и заканчиваться на end.
Если step равно 1, функция должна вернуть ошибку.
Вы должны использовать range(), math.log() и math.floor() и списочное выражение для создания списка соответствующей длины, применяя шаг для каждого элемента.
from math import floor, log
def geometric_progression(end, start=1, step=2):
return [start * step ** i for i in range(floor(log(end / start)
/ log(step)) + 1)]
geometric_progression(256) ## [1, 2, 4, 8, 16, 32, 64, 128, 256]
geometric_progression(256, 3) ## [3, 6, 12, 24, 48, 96, 192]
geometric_progression(256, 1, 4) ## [1, 4, 16, 64, 256]
Резюме
В этом испытании вы узнали, как создать функцию, которая инициализирует список, содержащий числа в указанном диапазоне, где отношение между двумя последовательными числами равно step. Вы использовали range(), math.log() и math.floor() и списочное выражение для создания списка соответствующей длины, применяя шаг для каждого элемента.