Generador de Secuencia de Progresión Geométrica

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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 de 1
  • step: un entero opcional que representa la razón común entre dos términos, con un valor predeterminado de 2

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.