Générateur de séquence de progression géométrique

Beginner

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

Introduction

En mathématiques, une progression géométrique est une suite de nombres dans laquelle chaque terme après le premier est trouvé en multipliant le terme précédent par un nombre fixe non nul appelé le ratio commun. Dans ce défi, vous devrez créer une fonction qui initialise une liste contenant les nombres dans la plage spécifiée où start et end sont inclusifs et le ratio entre deux termes est step.

Progression géométrique

Écrivez une fonction appelée geometric_progression qui prend trois paramètres :

  • end : un entier représentant la fin de la plage (inclusif)
  • start : un entier optionnel représentant le début de la plage (inclusif), avec une valeur par défaut de 1
  • step : un entier optionnel représentant le ratio commun entre deux termes, avec une valeur par défaut de 2

La fonction devrait renvoyer une liste contenant les nombres dans la plage spécifiée où le ratio entre deux termes est step. La liste devrait commencer par start et finir par end.

Si step est égal à 1, la fonction devrait renvoyer une erreur.

Vous devriez utiliser range(), math.log() et math.floor() et une compréhension de liste pour créer une liste de la longueur appropriée, en appliquant le pas à chaque élément.

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]

Sommaire

Dans ce défi, vous avez appris à créer une fonction qui initialise une liste contenant les nombres dans la plage spécifiée où le ratio entre deux termes est step. Vous avez utilisé range(), math.log() et math.floor() et une compréhension de liste pour créer une liste de la longueur appropriée, en appliquant le pas à chaque élément.