Python
 Computer >> コンピューター >  >> プログラミング >> Python

数値 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」を利用すれば、ループを使わずに一行で同じ結果を求めることも可能です。用途に応じて実装方法を使い分けるとよいでしょう。

  1. 【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つの関数

  2. 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 実行結果 上記のプログラムを実行すると、