数値 n を読み込んで級数 1+2+…+n の和を出力するPythonプログラム
指定された範囲に含まれる自然数の合計を求めて表示したい場合、ループを使って各要素を順番に処理し、その合計を結果として返すメソッド(関数)を定義すると便利です。
以下にその実装例を示します。
サンプルコード
def sum_natural_nums(val):
my_sum = 0
for i in range(1, val + 1):
my_sum += i * (i + 1) / 2
return my_sum
val = 9
print("The value is ")
print(val)
print("The sum of natural numbers upto 9 is : ")
print(sum_natural_nums(val))
出力
The value is 9 The sum of natural numbers upto 9 is : 165.0
処理の流れと解説
まず、引数として数値を受け取る「sum_natural_nums」という名前のメソッドを定義します。
合計を格納するための変数 my_sum を 0 で初期化します。
for ループによって、1 から引数で渡された数値までの範囲を繰り返し処理します。
各ループの処理では、i × (i + 1) / 2 の計算結果(いわゆる三角数)を合計に加算していきます。
ループが終了した時点で、累積された合計値を戻り値として返します。
合計を求めたい対象となる数(ここでは 9)を変数 val に設定します。
この値を引数としてメソッドを呼び出し、計算を実行します。
最後に、得られた結果をコンソールに出力して表示します。
補足:単純な 1+2+…+n の和を求めたい場合
上記のコードでは各項が i × (i + 1) / 2 となるため、出力結果は三角数の累積和(1+3+6+…+45 = 165.0)になります。単純に 1 から n までの自然数の和だけを求めたい場合は、ループ内の加算部分を次のように変更します。
def sum_natural_nums(val): my_sum = 0 for i in range(1, val + 1): my_sum += i return my_sum
さらに、等差数列の和の公式「n × (n + 1) / 2」を利用すれば、ループを使わずに一行で同じ結果を求めることも可能です。用途に応じて実装方法を使い分けるとよいでしょう。
-
【Python】ループを使わずに数列を出力する方法:再帰呼び出しを活用した実装
はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題の概要 2つの整数 N と K が与えられたとき、N が 0 より大きい間は N から K を引き続けます。そして N が 0 以下になったら、今度は元の値 N に戻るまで K を足していきます。 入力例 N = 10 K = 4 出力例 10 6 2 -2 2 6 10 アルゴリズムの考え方 N が 0 より大きい間、関数を再帰的に呼び出し続けます(各呼び出しごとに N から K を減算します)。 数値が 0 以下になったら、元の値に戻るまで各呼び出しごとに K を加算します。 加算と減算は同じ1つの関数
-
Pythonでフィボナッチ数列を出力する方法【初心者向けサンプルコード付き】
フィボナッチ数列とは、各項が直前の2つの数の和になるという性質を持つ数列です。「1, 1, 2, 3, 5, 8, 13…」のように数字が並んでいくのが特徴です。この種の数列は、Pythonの繰り返し処理(ループ文)を使えば簡単に生成できます。 フィボナッチ数列を出力するサンプルコード 以下は、while文を使ってフィボナッチ数列の最初の10個の数値を出力するPythonプログラムです。 x=0 y=1 fibo=0 while fibo<10: fibo=fibo+1 z=x+y print(z) x,y=y,z 実行結果 上記のプログラムを実行すると、