[Python] while文を途中で抜ける方法

Pythonのwhile文を途中で抜けるためには、break文を使用します。

break文は、ループの実行を即座に終了し、ループの後のコードに制御を移します。

例えば、特定の条件が満たされたときにwhileループを終了したい場合に便利です。

また、continue文を使用すると、ループの現在の反復をスキップし、次の反復に進むことができます。

これにより、特定の条件を満たす場合にのみループを続行することが可能です。

この記事でわかること
  • break文とcontinue文の基本的な使い方と違い
  • else節の活用方法とその効果
  • ネストされたループでのbreak文の使用方法
  • while文と例外処理の組み合わせによるエラーハンドリング
  • 関数内でのwhile文の使用とループの終了方法

目次から探す

while文を途中で抜ける方法

break文の使い方

break文の基本構文

break文は、ループを途中で終了させるための制御文です。

while文の中で特定の条件が満たされたときにループを抜け出すために使用します。

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

while 条件式:
    # ループ内の処理
    if 条件:
        break
    # 続く処理

break文を使った具体例

以下は、break文を使ってユーザーが入力した数値が負の数になったときにループを終了する例です。

while True:
    number = int(input("数値を入力してください(負の数で終了): "))
    if number < 0:
        print("負の数が入力されたため、ループを終了します。")
        break
    print(f"入力された数値は {number} です。")
数値を入力してください(負の数で終了): 5
入力された数値は 5 です。
数値を入力してください(負の数で終了): -1
負の数が入力されたため、ループを終了します。

この例では、ユーザーが負の数を入力するとbreak文が実行され、whileループが終了します。

continue文との違い

continue文の基本構文

continue文は、ループの現在の反復をスキップし、次の反復に進むための制御文です。

while文の中で特定の条件が満たされたときに、残りの処理をスキップして次のループに移行します。

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

while 条件式:
    # ループ内の処理
    if 条件:
        continue
    # 続く処理

continue文を使った具体例

以下は、continue文を使ってユーザーが入力した数値が偶数の場合に、その数値をスキップして次の入力を求める例です。

while True:
    number = int(input("数値を入力してください(0で終了): "))
    if number == 0:
        print("0が入力されたため、ループを終了します。")
        break
    if number % 2 == 0:
        print("偶数が入力されたため、次の入力を求めます。")
        continue
    print(f"入力された奇数は {number} です。")
数値を入力してください(0で終了): 4
偶数が入力されたため、次の入力を求めます。
数値を入力してください(0で終了): 3
入力された奇数は 3 です。
数値を入力してください(0で終了): 0
0が入力されたため、ループを終了します。

この例では、偶数が入力されるとcontinue文が実行され、print文をスキップして次の入力を求めます。

else節の活用

else節の基本構文

while文にはelse節を付けることができ、ループが正常に終了したときに実行されます。

break文でループが終了した場合、else節は実行されません。

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

while 条件式:
    # ループ内の処理
    if 条件:
        break
else:
    # ループが正常に終了した場合の処理

else節を使った具体例

以下は、else節を使って、ユーザーが特定の数値を入力しなかった場合にメッセージを表示する例です。

target = 10
while True:
    number = int(input("数値を入力してください(0で終了): "))
    if number == 0:
        print("0が入力されたため、ループを終了します。")
        break
    if number == target:
        print(f"目標の数値 {target} が入力されました。")
        break
else:
    print("目標の数値が入力されませんでした。")
数値を入力してください(0で終了): 5
数値を入力してください(0で終了): 10
目標の数値 10 が入力されました。

この例では、else節は実行されません。

なぜなら、目標の数値が入力されたため、break文でループが終了したからです。

応用例

ネストされたwhile文でのbreakの使用

ネストされたループの基本

ネストされたループとは、ループの中にさらにループがある構造のことを指します。

while文をネストして使用することで、複雑な繰り返し処理を実現できます。

以下は、ネストされたwhile文の基本的な構造です。

while 条件式1:
    # 外側のループの処理
    while 条件式2:
        # 内側のループの処理

外側のループを抜ける方法

ネストされたループでbreak文を使用すると、通常は内側のループのみを抜けます。

外側のループを抜けるためには、フラグを使用する方法があります。

以下はその例です。

exit_outer_loop = False
while True:
    print("外側のループ")
    while True:
        print("内側のループ")
        command = input("終了するには 'exit' を入力してください: ")
        if command == 'exit':
            exit_outer_loop = True
            break
    if exit_outer_loop:
        break
外側のループ
内側のループ
終了するには 'exit' を入力してください: continue
内側のループ
終了するには 'exit' を入力してください: exit

この例では、exit_outer_loopというフラグを使って、内側のループを抜けた後に外側のループも終了させています。

while文とtry-exceptの組み合わせ

例外処理の基本

try-except文は、プログラムの実行中に発生する可能性のある例外を処理するための構文です。

tryブロック内で例外が発生した場合、exceptブロックが実行されます。

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

try:
    # 例外が発生する可能性のある処理
except 例外の種類:
    # 例外が発生した場合の処理

例外発生時にループを抜ける方法

while文とtry-exceptを組み合わせることで、例外が発生した際にループを抜けることができます。

以下はその例です。

while True:
    try:
        number = int(input("整数を入力してください(0で終了): "))
        if number == 0:
            print("0が入力されたため、ループを終了します。")
            break
    except ValueError:
        print("無効な入力です。整数を入力してください。")
整数を入力してください(0で終了): abc
無効な入力です。整数を入力してください。
整数を入力してください(0で終了): 0
0が入力されたため、ループを終了します。

この例では、ユーザーが整数以外の値を入力した場合にValueErrorが発生し、exceptブロックでエラーメッセージを表示します。

while文と関数の組み合わせ

関数内でのwhile文の使用

関数内でwhile文を使用することで、特定の条件が満たされるまで繰り返し処理を行うことができます。

以下は、関数内でwhile文を使用する基本的な例です。

def repeat_input():
    while True:
        text = input("文字列を入力してください('exit'で終了): ")
        if text == 'exit':
            print("終了します。")
            break
        print(f"入力された文字列は {text} です。")
repeat_input()
文字列を入力してください('exit'で終了): hello
入力された文字列は hello です。
文字列を入力してください('exit'で終了): exit
終了します。

この例では、repeat_input関数内でwhile文を使用し、ユーザーが'exit'と入力するまで文字列を繰り返し入力させます。

関数からのループの抜け方

関数内でwhile文を使用している場合、return文を使って関数自体を終了させることもできます。

以下はその例です。

def find_target():
    target = 5
    while True:
        number = int(input("数値を入力してください: "))
        if number == target:
            print(f"目標の数値 {target} が見つかりました。")
            return
        print(f"入力された数値は {number} です。")
find_target()
数値を入力してください: 3
入力された数値は 3 です。
数値を入力してください: 5
目標の数値 5 が見つかりました。

この例では、ユーザーが目標の数値を入力するとreturn文が実行され、関数find_targetが終了します。

よくある質問

break文とreturn文の違いは?

break文とreturn文は、どちらもプログラムの流れを制御するために使用されますが、その目的と動作は異なります。

  • break文は、ループを途中で終了させるために使用されます。

whileforループの中で特定の条件が満たされたときにループを抜け出すために使います。

  • return文は、関数を終了させるために使用されます。

関数内でreturn文が実行されると、関数の実行が終了し、呼び出し元に制御が戻ります。

必要に応じて、戻り値を返すこともできます。

例:return 42は、関数を終了し、42を呼び出し元に返します。

while文で無限ループを避けるにはどうすればいい?

無限ループを避けるためには、以下のポイントに注意することが重要です。

  • 終了条件を明確にする: while文の条件式が常にTrueにならないように、適切な終了条件を設定します。
  • ループ内で条件を更新する: ループ内で条件を変化させる処理を行い、終了条件が満たされるようにします。
  • デバッグ用のカウンタを使用する: 開発中に無限ループを防ぐために、カウンタを設定し、一定回数でループを強制終了することも有効です。

else節はどのような場合に使うべき?

else節は、ループが正常に終了した場合に特定の処理を行いたいときに使用します。

break文でループが終了した場合、else節は実行されません。

以下のような場合に有効です。

  • 特定の条件が満たされなかった場合の処理: ループ内で特定の条件が一度も満たされなかった場合に、else節でその旨を通知する処理を行うことができます。
  • ループがすべての反復を正常に完了した場合の処理: ループがすべての反復を正常に完了した場合に、後続の処理を行うために使用します。

まとめ

この記事では、Pythonのwhile文を途中で抜ける方法について詳しく解説しました。

break文やcontinue文、else節の使い方を理解し、ネストされたループや例外処理との組み合わせ、関数内での使用方法についても学びました。

これらの知識を活用して、より効率的で安全なループ処理を実装してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • 条件分岐 (17)
  • 繰り返し処理 (29)
  • URLをコピーしました!
目次から探す