はじめに
数学において、等比数列とは、最初の項以降の各項が、前の項に一定の非ゼロの数(公比と呼ばれる)を掛けることで得られる数の列です。このチャレンジでは、start
と end
が含まれ、2 つの項の間の比が step
である指定された範囲の数を含むリストを初期化する関数を作成します。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
数学において、等比数列とは、最初の項以降の各項が、前の項に一定の非ゼロの数(公比と呼ばれる)を掛けることで得られる数の列です。このチャレンジでは、start
と end
が含まれ、2 つの項の間の比が step
である指定された範囲の数を含むリストを初期化する関数を作成します。
geometric_progression
という名前の関数を書きましょう。この関数は 3 つのパラメータを受け取ります。
end
:範囲の終端を表す整数(含まれます)start
:範囲の始端を表すオプショナルな整数(含まれます)。デフォルト値は 1
step
:2 つの項の間の公比を表すオプショナルな整数。デフォルト値は 2
関数は、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]
このチャレンジでは、2 つの項の間の比が step
である指定された範囲の数を含むリストを初期化する関数を作成する方法を学びました。適切な長さのリストを作成するために、range()
、math.log()
、math.floor()
とリスト内包表記を使用し、各要素に対してステップを適用しました。