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

Pythonのfor-else構文とは?ループとelse文の使い方を実例付きで解説

本記事では、Python 3.xにおける「loop-else(ループelse)」構文について詳しく解説します。特に、forループとelse文がどのように連携して動作するのかに焦点を当てて説明していきます。

多くのプログラミング言語では、elseはif文と組み合わせた「if-else」の形でのみ使用できます。しかしPythonには、forループにもelseを組み合わせられるという独自の特徴があります。

ただし、ループに付いたelseブロックが実行されるのは、ループが最後まで正常に終了した場合のみです。break文などによってループが強制的に中断された場合、elseブロックはインタプリタによって無視され、実行はスキップされます。

それでは、具体的なコード例を見ながら、for-else構文の動きを確認していきましょう。

例1:正常終了する場合のfor-else構文

サンプルコード

for i in ['T','P']:
    print(i)
else: # ループelse文
    print("Loop-else statement successfully executed")

実行結果

T
P
Loop-else statement successfully executed

例2:breakで強制終了する場合のfor-else構文

サンプルコード

for i in ['T','P']:
    print(i)
    break
else: # ループelse文
    print("Loop-else statement successfully executed")

実行結果

T

解説: 例1では、forループがリスト['T', 'P']のすべての要素に対する反復処理を完了して正常に終了したため、elseブロックが実行されています。一方、例2ではbreak文によってループが強制的に中断されたため、elseブロックは実行されませんでした。

このように、ループが強制的に終了させられた場合には、loop-else文は実行されないことがわかります。

次に、条件によってloop-else文が実行されるケースと実行されないケースの両方を確認できる例を見てみましょう。

サンプルコード

def pos_nev_test():
    for i in [5,6,7]:
        if i>=0:
            print("Positive number")
        else:
            print("Negative number")
            break
    else:
        print("Loop-else Executed")

# メイン処理
pos_nev_test()

実行結果

Positive number
Positive number
Positive number
Loop-else Executed

解説: リスト内のすべての要素が0以上のため、if-else構造の中のelseブロック(「Negative number」の出力部分)は一度も実行されず、breakも発生しませんでした。その結果、ループは最後まで正常に完了し、loop-else文が実行されています。

もしforループのリスト[5, 6, 7]を[7, -1, 3]に置き換えると、出力は次のように変わります。

実行結果

Positive number
Negative number

解説: 2番目の要素-1が負の数であるため「Negative number」が出力され、直後のbreak文によってループが強制終了します。このため、loop-else文は実行されません。

まとめ

本記事では、Pythonにおけるloop-else文の仕組みと、さまざまな実装パターンについて学びました。for-else構文を活用すれば、ループが最後まで完了したかどうかを簡潔に判定でき、要素の検索処理などで「見つからなかった場合」の処理をスマートに記述できるようになります。ぜひ実際のコードでも試してみてください。

  1. JavaScriptのforループをフローチャートで図解!仕組みと基本構文をわかりやすく解説

    JavaScriptのforループとは? JavaScriptにおける「for」ループは、同じ処理を繰り返し実行するための基本的な制御構造です。forループは主に3つの要素で構成されており、それぞれが明確な役割を持っています。 1. ループの初期化 まず最初にループの初期化が行われます。ここでは、カウンターとして使う変数に開始値を設定します。この初期化文は、ループ本体が始まる前に一度だけ実行されるのが特徴です。 2. 条件判定(テスト文) 次に条件判定が行われ、指定された条件が真(true)かどうかが評価されます。条件がtrueであれば、ループ内に記述されたコードが実行されます。一方、fa

  2. ループを使わずに数列を出力するPythonプログラム|再帰とフラグで実現する方法

    本記事では、for文やwhile文などのループ構文を一切使わずに数列を表示するという問題の解法について解説します。問題の定義問題: 2つの数値 N と K が与えられます。まずNが0より大きい間はNからKを繰り返し引き、Nが0以下(ゼロまたは負)になったら、今度は逆にKを足していきます。そして値が元の数値Nに戻った時点で処理を終了します。実行例N = 10K = 4出力: 10 6 2 -2 2 6 10アルゴリズムNが0より大きい間、関数を再帰的に呼び出し続けます。各呼び出しのたびにNからKを減算します。数値が0以下になったら加算モードに切り替え、各呼び出しごとにKを加算します。元の数値Nに