無限ループと終了条件 | while文 | Python本格超入門

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

無限ループと終了条件

Pythonのwhile文は、指定した条件が正しい(真:True)である限り、何度でも同じ処理を繰り返す便利な構文です。しかし、条件がいつまでもTrueのままだと、プログラムは終わりなく処理を続けてしまいます。これが無限ループです。無限ループが発生すると、パソコンに過度な負荷がかかったり、プログラムがフリーズしたりするため、適切な「終了条件(出口)」の設計が極めて重要になります。この記事では、無限ループのメカニズムと、安全にループを制御・終了させる方法を解説します。

制御不能な無限ループの例

無限ループは、while文の条件式が常に満たされているか、ループの内部で条件を変化させる処理を忘れたときに発生します。以下は、最も典型的な「終わりがない」コードの例です。

# 【注意】実行すると止まらなくなる無限ループの例
while True:
    print("無限ループ中")

このコードでは、条件式に True そのものが指定されているため、文字通り永久に "無限ループ中" という文字が出力され続けます。

【もし実行して止まらなくなったら?】
もし学習中に無限ループを実行してしまった場合は、慌てずに実行中のターミナル(コンソール)画面で Ctrl + C (Macでも Ctrl + C)を押してください。プログラムを強制終了(キーボード割り込みエラー)させることができます。

break文を使った「途中で抜け出す」終了方法

無限ループを安全にコントロールするための代表的な方法が、breakの使用です。あえて while True: で無限ループを作っておき、特定の条件を満たしたときだけ break を発動させて強制終了させます。

# break文を使って安全に終了させる例
counter = 0

while True:
    print("ループ処理を実行中...")
    counter += 1  # カウンタを1ずつ増やす
    
    # 5回繰り返したらループを抜ける
    if counter == 5:
        print("5回に達したのでループを終了します。")
        break

この例では、最初は while True で回り続けますが、内部で counter5 になった瞬間に if 文の条件が成立し、break が実行されてループの檻から一瞬で脱出します。

一見すると遠回りに見えますが、「ユーザーが『終了』と入力するまで処理を繰り返す」といった、いつ終わるか事前に分からない実務のプログラム(対話型ツールやゲームのメインループなど)では、この while Truebreak の組み合わせが王道スタイルとして非常によく使われます。

条件式でスマートに終了条件を設定する方法

もう一つの方法は、while の後ろの条件式そのものに「いつまで続けるか」の基準を書いておく方法です。

# 条件式で終わりをコントロールするwhileループ
num = 0

while num < 10:
    print(f"現在の数値: {num}")
    num += 1  # ★超重要:この行を忘れると無限ループになります

このコードでは、ループが1回まわるごとに num += 1 で数値がカウントアップされていきます。そして num10 に達した瞬間に、条件式である num < 10 が満たされなくなり(Falseになり)、ループが綺麗に自動終了します。

無限ループの発生を未然に防ぐチェックリスト

while文を書くときは、意図しない無限ループによってプログラムが暴走しないよう、以下の3点を確認する癖をつけましょう。

  • カウンタの更新を忘れていないか: ループ内で num += 1 のような条件を動かす記述を忘れると、変数が初期値のまま固定され、永遠に条件を満たし続けてしまいます。
  • 条件式がいつか必ず False になるか: 「いつかは終わる条件」になっているかを脳内でシミュレーションしましょう。
  • break文へのルートが確実にあるか: while True を使う場合は、例外なく break を通る判定ロジックが組み込まれているか確認してください。

まとめ

while文によるループ処理は、回数が決まっていない繰り返しを扱うための強力な仕組みです。しかし、表裏一体のリスクとして「無限ループ」の危険が常に潜んでいます。条件式を使ってスマートに引き際を設定するか、あるいは while Truebreak 文を仕込んで中からこじ開けるか、状況に応じて適切な出口を用意しましょう。万が一暴走したときは「Ctrl + C」で止められるという安心感を持ったうえで、様々な繰り返し処理に挑戦してみてください。