Introducción
En matemáticas, una progresión geométrica es una secuencia de números en la que cada término después del primero se obtiene multiplicando el término anterior por un número fijo y no nulo llamado razón común. En este desafío, crearás una función que inicialice una lista que contiene los números en el rango especificado donde start y end son inclusivos y la razón entre dos términos es step.
Progresión Geométrica
Escribe una función llamada geometric_progression que tome tres parámetros:
end: un entero que representa el final del rango (inclusivo)start: un entero opcional que representa el inicio del rango (inclusivo), con un valor predeterminado de1step: un entero opcional que representa la razón común entre dos términos, con un valor predeterminado de2
La función debe devolver una lista que contiene los números en el rango especificado donde la razón entre dos términos es step. La lista debe comenzar con start y terminar con end.
Si step es igual a 1, la función debe devolver un error.
Debes usar range(), math.log() y math.floor() y una comprensión de listas para crear una lista de la longitud adecuada, aplicando el paso para cada elemento.
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]
Resumen
En este desafío, has aprendido cómo crear una función que inicialice una lista que contiene los números en el rango especificado donde la razón entre dos términos es step. Has utilizado range(), math.log() y math.floor() y una comprensión de listas para crear una lista de la longitud adecuada, aplicando el paso para cada elemento.