【Python】while文を途中で抜ける方法

Pythonのwhile文は、特定の条件が満たされるまで繰り返し処理を行うための便利なツールです。

しかし、ループを途中で終了させたい場合や、特定の条件でスキップしたい場合もあります。

この記事では、while文の基本的な使い方から、break文やcontinue文を使ったループの制御方法、さらに実践的な例までをわかりやすく解説します。

目次から探す

while文の基本構造

Pythonのwhile文は、指定した条件が真である間、繰り返し処理を行うための制御構造です。

条件が偽になるとループを終了します。

while文は、特定の条件が満たされるまで処理を繰り返したい場合に非常に便利です。

while文の基本的な使い方

while文の基本的な構造は以下の通りです。

while 条件式:
    実行する処理

条件式が真である限り、インデントされたブロック内の処理が繰り返し実行されます。

以下に具体的な例を示します。

# 1から5までの数字を出力するプログラム
count = 1
while count <= 5:
    print(count)
    count += 1

このプログラムでは、countが5以下である限り、countの値を出力し、countを1ずつ増やしていきます。

countが6になると条件式count <= 5が偽となり、ループが終了します。

無限ループの例

while文を使用する際に注意が必要なのは、条件式が常に真である場合、ループが無限に続いてしまうことです。

これを無限ループと呼びます。

無限ループは意図的に使用する場合もありますが、通常は避けるべきです。

以下は無限ループの例です。

# 無限ループの例
while True:
    print("これは無限ループです")

このプログラムは、while Trueという条件式が常に真であるため、永遠にこれは無限ループですというメッセージを出力し続けます。

無限ループを停止するには、プログラムを強制終了する必要があります。

無限ループは、特定の条件が満たされるまで処理を続けたい場合に有用ですが、適切な終了条件を設定しないとプログラムが停止しなくなるため、注意が必要です。

次のセクションでは、while文を途中で抜ける方法について詳しく説明します。

while文を途中で抜ける方法

while文を途中で抜ける方法はいくつかありますが、最も一般的なのはbreak文を使う方法です。

また、特定の条件を満たしたときにループを終了する方法もあります。

以下でそれぞれの方法について詳しく解説します。

break文の使い方

基本的な使い方

break文は、ループを強制的に終了させるための文です。

while文の中でbreak文が実行されると、その時点でループが終了し、次のコードに進みます。

これにより、無限ループを防ぐことができます。

実際のコード例

以下は、break文を使ってwhile文を途中で抜ける例です。

count = 0
while True:
    print("カウント:", count)
    count += 1
    if count >= 5:
        break  # countが5以上になったらループを終了する

このコードでは、countが5以上になるとbreak文が実行され、whileループが終了します。

実行結果は以下のようになります。

カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4

条件付きで抜ける方法

条件式の設定

while文の条件式を工夫することで、特定の条件を満たしたときにループを終了することができます。

これにより、break文を使わずにループを制御することができます。

実際のコード例

以下は、条件式を使ってwhile文を途中で抜ける例です。

count = 0
while count < 5:
    print("カウント:", count)
    count += 1

このコードでは、countが5未満の間はループが続きますが、countが5以上になるとループが終了します。

実行結果は以下のようになります。

カウント: 0
カウント: 1
カウント: 2
カウント: 3
カウント: 4

このように、条件式を工夫することで、break文を使わずにループを制御することができます。

どちらの方法を使うかは、具体的な状況やコードの可読性を考慮して選択すると良いでしょう。

応用的な使い方

continue文との併用

continue文の基本

continue文は、ループの現在の反復をスキップし、次の反復に進むために使用されます。

while文の中でcontinue文が実行されると、その時点での残りのコードは実行されず、ループの条件チェックに戻ります。

例えば、1から10までの数字をループで処理し、偶数のときだけ何もしないで次の反復に進む場合、以下のように書くことができます。

i = 1
while i <= 10:
    if i % 2 == 0:
        i += 1
        continue
    print(i)
    i += 1

このコードは、1, 3, 5, 7, 9を出力します。

偶数のときはcontinue文によってprint文がスキップされます。

break文とcontinue文の違い

break文とcontinue文はどちらもループの制御に使用されますが、その動作は異なります。

  • break文: ループを完全に終了させ、ループの外のコードに制御を移します。
  • continue文: ループの現在の反復を終了させ、次の反復に進みます。

以下の例で違いを確認してみましょう。

i = 1
while i <= 10:
    if i == 5:
        break
    print(i)
    i += 1

このコードは、1, 2, 3, 4を出力し、iが5になった時点でループを終了します。

一方、continue文を使った場合は次のようになります。

i = 1
while i <= 10:
    if i == 5:
        i += 1
        continue
    print(i)
    i += 1

このコードは、1, 2, 3, 4, 6, 7, 8, 9, 10を出力し、iが5のときだけスキップします。

実際のコード例

以下は、break文とcontinue文を組み合わせた例です。

i = 1
while i <= 10:
    if i == 5:
        print("5に到達したのでループを終了します")
        break
    elif i % 2 == 0:
        i += 1
        continue
    print(i)
    i += 1

このコードは、1, 3を出力し、iが5になった時点でループを終了します。

偶数のときはcontinue文によってスキップされます。

else節との併用

else節の基本

while文にはelse節を追加することができます。

else節は、whileループが正常に終了した場合に実行されます。

つまり、break文によってループが終了しなかった場合に実行されます。

以下は、else節を使った基本的な例です。

i = 1
while i <= 5:
    print(i)
    i += 1
else:
    print("ループが正常に終了しました")

このコードは、1, 2, 3, 4, 5を出力し、その後に「ループが正常に終了しました」と表示します。

break文とelse節の関係

break文が実行されると、else節は実行されません。

これにより、ループが途中で終了したかどうかを判別することができます。

以下の例で確認してみましょう。

i = 1
while i <= 5:
    if i == 3:
        break
    print(i)
    i += 1
else:
    print("ループが正常に終了しました")

このコードは、1, 2を出力し、iが3になった時点でループを終了します。

else節は実行されません。

実際のコード例

以下は、break文とelse節を組み合わせた実際のコード例です。

i = 1
while i <= 5:
    if i == 3:
        print("3に到達したのでループを終了します")
        break
    print(i)
    i += 1
else:
    print("ループが正常に終了しました")

このコードは、1, 2を出力し、iが3になった時点で「3に到達したのでループを終了します」と表示してループを終了します。

else節は実行されません。

一方、break文が実行されない場合の例も見てみましょう。

i = 1
while i <= 5:
    print(i)
    i += 1
else:
    print("ループが正常に終了しました")

このコードは、1, 2, 3, 4, 5を出力し、その後に「ループが正常に終了しました」と表示します。

実践的な例

ここでは、while文を使った実践的な例を紹介します。

特に、ユーザー入力やファイル読み込み時にループを終了する方法について詳しく解説します。

ユーザー入力を使ったループの終了

基本的な例

ユーザー入力を使ってループを終了する場合、特定のキーワードや条件を満たしたときにループを抜けるようにします。

例えば、ユーザーが exit と入力したときにループを終了するプログラムを考えてみましょう。

実際のコード例

以下に、ユーザー入力を使ってループを終了する例を示します。

while True:
    user_input = input("何か入力してください(終了するには 'exit' と入力):")
    if user_input == 'exit':
        print("ループを終了します。")
        break
    else:
        print(f"あなたは '{user_input}' と入力しました。")

このコードでは、無限ループの中でユーザーからの入力を受け取り、入力が exit であればループを終了します。

それ以外の入力があった場合は、その入力を表示します。

ファイル読み込み時のループの終了

基本的な例

ファイルを読み込む際に、特定の条件を満たしたときにループを終了する方法もあります。

例えば、ファイルの内容を1行ずつ読み込み、特定のキーワードが見つかったらループを終了するプログラムを考えてみましょう。

実際のコード例

以下に、ファイル読み込み時にループを終了する例を示します。

# 例として、sample.txt というファイルを用意してください
# ファイルの内容:
# これはテストファイルです。
# 特定のキーワードが含まれています。
# この行でループを終了します。
# まだ続きます。
with open('sample.txt', 'r', encoding='utf-8') as file:
    while True:
        line = file.readline()
        if not line:
            break  # ファイルの終わりに達したらループを終了
        print(line.strip())
        if 'ループを終了します' in line:
            print("特定のキーワードが見つかりました。ループを終了します。")
            break

このコードでは、sample.txtというファイルを1行ずつ読み込みます。

各行を表示し、特定のキーワード「ループを終了します」が含まれている場合にループを終了します。

ファイルの終わりに達した場合もループを終了します。

これらの例を通じて、while文を使ったループの終了方法を理解できたでしょうか。

ユーザー入力やファイル読み込みなど、さまざまなシチュエーションで応用できるので、ぜひ試してみてください。

目次から探す