【Python】while文でbreak文を使う

Pythonのwhile文は、条件が真である限り繰り返し処理を行う便利なループ構造です。

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

この記事では、while文とbreak文を組み合わせて、ループを柔軟に制御する方法を解説します。

基本的な使い方から実践的な例まで、初心者でも理解しやすいようにサンプルコードとともに説明します。

目次から探す

while文とbreak文の組み合わせ

Pythonのwhile文は、条件が真である限り繰り返し処理を行うループ構造です。

しかし、特定の条件を満たしたときにループを強制的に終了させたい場合があります。

そんなときに役立つのがbreak文です。

ここでは、while文とbreak文の基本的な使い方から、条件に基づくループの終了、無限ループからの脱出方法までを解説します。

基本的な例

まずは、while文とbreak文の基本的な使い方を見てみましょう。

以下の例では、カウンタ変数iが5になったときにループを終了させます。

i = 0
while True:
    print(i)
    i += 1
    if i == 5:
        break

このコードは、iが5になるまでiの値を出力し続けます。

iが5になるとif文の条件が真となり、break文が実行されてループが終了します。

条件に基づくループの終了

次に、特定の条件に基づいてループを終了させる方法を見てみましょう。

以下の例では、ユーザーからの入力を受け取り、特定のキーワードが入力されたときにループを終了します。

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

このコードは、ユーザーが'exit'と入力するまでループを続けます。

'exit'が入力されるとif文の条件が真となり、break文が実行されてループが終了します。

無限ループからの脱出

while文は条件が真である限り繰り返し処理を行うため、条件が常に真である場合は無限ループになります。

無限ループはプログラムが停止しないため、適切にbreak文を使って脱出する必要があります。

以下の例では、無限ループを作成し、特定の条件で脱出する方法を示します。

count = 0
while True:
    print("無限ループ中...")
    count += 1
    if count == 10:
        print("ループを終了します。")
        break

このコードは、countが10になるまで「無限ループ中…」というメッセージを出力し続けます。

countが10になるとif文の条件が真となり、break文が実行されてループが終了します。

以上のように、while文とbreak文を組み合わせることで、柔軟にループを制御することができます。

次のセクションでは、実践的な例を通じてさらに詳しく解説します。

実践的な例

ユーザー入力を使ったループ

ユーザーが特定の入力をするまでループ

ユーザー入力を使ったループでは、特定の条件が満たされるまでループを続けることがよくあります。

例えば、ユーザーが exit と入力するまでループを続ける例を見てみましょう。

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

このコードでは、while True によって無限ループが作成されます。

ユーザーが exit と入力した場合に break文が実行され、ループが終了します。

それ以外の入力があった場合は、その入力を表示して再度ループが続行されます。

無効な入力を避けるためのbreak文

ユーザー入力を検証し、無効な入力を避けるためにも break文を使用することができます。

例えば、ユーザーが数値を入力するまでループを続ける例を見てみましょう。

while True:
    user_input = input("数値を入力してください:")
    if user_input.isdigit():
        print(f"あなたが入力した数値は {user_input} です。")
        break
    else:
        print("無効な入力です。数値を入力してください。")

このコードでは、isdigit()メソッドを使ってユーザーの入力が数値であるかどうかを確認しています。

数値が入力された場合に break文が実行され、ループが終了します。

無効な入力があった場合は、再度入力を促します。

ファイル読み込みでのbreak文

ファイルの終わりまでループ

ファイルを読み込む際にも while文と break文を組み合わせて使用することができます。

例えば、ファイルの内容を1行ずつ読み込み、ファイルの終わりに達したらループを終了する例を見てみましょう。

with open('example.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line:
            break
        print(line.strip())

このコードでは、readline()メソッドを使ってファイルから1行ずつ読み込んでいます。

readline() が空の文字列を返した場合、ファイルの終わりに達したことを意味し、break文が実行されてループが終了します。

特定の条件でループを終了

ファイルの内容を読み込む際に、特定の条件が満たされた場合にループを終了することもできます。

例えば、ファイル内に特定のキーワードが見つかった場合にループを終了する例を見てみましょう。

keyword = "終了"
with open('example.txt', 'r') as file:
    while True:
        line = file.readline()
        if not line:
            break
        if keyword in line:
            print(f"キーワード '{keyword}' が見つかりました。ループを終了します。")
            break
        print(line.strip())

このコードでは、各行に特定のキーワードが含まれているかどうかを確認しています。

キーワードが見つかった場合に break文が実行され、ループが終了します。

キーワードが見つからない場合は、行の内容を表示してループが続行されます。

以上のように、while文と break文を組み合わせることで、さまざまな条件に基づいてループを制御することができます。

これにより、効率的で柔軟なプログラムを作成することが可能になります。

break文を使う際の注意点

無限ループのリスク

break文を使う際に最も注意すべき点の一つは、無限ループのリスクです。

while文は条件が真である限りループを続けますが、break文を適切に配置しないと、意図せず無限ループに陥る可能性があります。

例えば、以下のコードは無限ループに陥る可能性があります。

while True:
    user_input = input("Enter 'exit' to stop: ")
    if user_input == 'exit':
        break
    print("You entered:", user_input)

このコードはユーザーが exit と入力するまでループを続けますが、もしユーザーが exit と入力しない限り、ループは永遠に続きます。

無限ループはプログラムの停止を引き起こし、システムリソースを無駄に消費するため、注意が必要です。

コードの可読性

break文を使うことでループを強制的に終了させることができますが、これがコードの可読性に影響を与えることがあります。

特に、複雑な条件や多重ループの中でbreak文を使用すると、コードの流れが分かりにくくなることがあります。

以下の例を見てみましょう。

while True:
    for i in range(10):
        if i == 5:
            break
    if some_condition:
        break

このコードは、whileループの中にforループがあり、さらに複数のbreak文が使われています。

これにより、どのbreak文がどのループを終了させるのかが一目で分かりにくくなります。

コードの可読性を保つためには、break文の使用を最小限に抑え、コメントを追加してコードの意図を明確にすることが重要です。

他の制御文との組み合わせ

break文は他の制御文(例えば、continue文やelse節)と組み合わせて使うことができますが、その際には注意が必要です。

特に、else節はループが正常に終了した場合にのみ実行されるため、break文が使われた場合には実行されません。

以下の例を見てみましょう。

for i in range(10):
    if i == 5:
        break
else:
    print("Loop completed without break")

このコードでは、iが5になった時点でbreak文が実行されるため、else節は実行されません。

else節が実行されるのは、forループが最後まで正常に終了した場合のみです。

このように、break文と他の制御文を組み合わせる際には、その動作を正確に理解しておくことが重要です。

以上のように、break文を使う際には無限ループのリスク、コードの可読性、他の制御文との組み合わせに注意する必要があります。

これらの点を意識することで、より安全で読みやすいコードを書くことができます。

目次から探す