break文を使った繰り返し処理の強制終了とcontinue文を使った繰り返し処理のスキップ

広告
eyecatch

while 文や for 文の繰り返し処理の中で、 break 文を使用すると繰り替えし処理の強制終了を行うことができ、また continue 文を使用すると残り繰り返し処理をスキップして条件式の判定へ進めることができます。ここでは while 文や for 文の中で break 文と continue 文の使い方について解説します。

break文を使って繰り返し処理の強制終了

while 文や for 文のブロックの中で break 文が実行されると繰り返し処理が強制的に終了して次の文へ処理が移ります。

break

break 文は if 文と組み合わせて次のような使い方をします。

while 条件式:
    条件式が真の時に実行する文1
    条件式が真の時に実行する文2

    if 条件式:
        break

    条件式が真の時に実行する文3

while 文であれば条件式が真の間繰り返しブロック内の処理を実行しますが、ブロック内で if 文を記述し、 if 文の条件式が真になった時は break を実行するように記述します。 break 文が実行されると while 文が強制的に終了します。

具体的に次のような例で考えてみます。 while 文の条件式は True としてあるため必ず真となり無限ループとなります。ただブロック内で if 文を使い条件式が真の場合は break 文を使って繰り返し処理を終了させます。

num = 0
while True:
    print("num = " + str(num))
    num += 1
    if num >= 2:
        breaak

print("End")

この時実行される流れは次のようになります。

 1) 変数 num に 0 を代入
 2) while 文の条件式を評価。条件式が True のため必ず条件式は真となる
 3) 変数 num の値を出力
 4) 変数 num に 1 を加算 (num は 1)
 5) if 文の条件式を評価。変数 num は 2 より小さいので条件式は偽
 6) ブロックの最後まで達したので再度 while 文の条件式を評価
 7) 変数 num の値を出力
 8) 変数 num に 1 を加算 (num は 2)
 9) if 文の条件式を評価。変数 num は 2 より小さいくないので条件式は真
10) while 文を終了し次の処理へ
11) "End" を出力

このように break 文を使用することで、特定の状態になった時に while 文や for 文を抜けることができます。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample6-1.py という名前で保存します。

print("Start")

while True:
    print("数値を入力すると 5 倍した値を表示します")
    print("終了する場合は -1 を入力してください")
    num = int(input("> "))
    if num == -1:
        break
    print("num = " + str(num) + ", num *  = " + str(num * 5) + "¥n")

print("End")

その後で、次のように実行してください。

python sample6-1.py

break文を使って繰り返し処理の強制終了(1)

数値の入力待ちとなります。数値を入力すると 5 倍にした数値を計算して表示します。

break文を使って繰り返し処理の強制終了(2)

break文を使って繰り返し処理の強制終了(3)

-1 を入力すると break 文が実行されて処理が終了します。

break文を使って繰り返し処理の強制終了(4)

continue文を使った繰り返し処理のスキップ

while 文や for 文のブロックの中で continue 文が実行されると繰り返し処理がスキップして条件式の評価まで処理が移ります。

continue

continue 文は if 文と組み合わせて次のような使い方をします。

for 変数 in イテラブルオブジェクト:
    実行する文1
    実行する文2

    if 条件式:
        continue

    実行する文3

for 文であればリストやタプルなどのイテラブルオブジェクトに含まれる要素の数だけ繰り返しブロック内の処理を実行しますが、ブロック内で if 文を記述し、 if 文の条件式が真になった時は continue を実行するように記述します。 continue 文が実行されるとブロック内の if 文以降にある「実行する文3」は実行されずに for 文でイテラブルオブジェクトから次の要素を取り出すところまで処理がスキップします。

具体的に次のような例で考えてみます。 for 文でリストから要素を順に取り出し値を画面に表示します。ただし要素の値が文字列だった場合はスキップして次の要素の取得を行います。

for val in [3, "ab", 7]:
    if isinstance(val, str):
        continue
    print("val = " + str(val))

print("End")

この時実行される流れは次のようになります。

 1) 変数 val にリストから要素を1つ代入 (val は 3)
 2) if の条件式で val のデータ型が文字列型か調べる --> 偽
 3) 変数 val の値を出力
 4) 変数 val にリストから要素を1つ代入 (val は "ab")
 5) if の条件式で val のデータ型が文字列型か調べる --> 真
 6) ブロック内の残りの文はスキップ
 7) 変数 val にリストから要素を1つ代入 (val は 7)
 8) if の条件式で val のデータ型が文字列型か調べる --> 偽
 9) 変数 val の値を出力
10) "End" を出力

このように continue 文を使用することで、特定の状態の時にブロック内のそれ以降の処理をスキップさせることができます。

サンプルプログラム

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 sample6-1.py という名前で保存します。

print("Start")
total = 0

for num in [35, 25, "OK", 45, "Pass", 28]:
    if isinstance(num, str):
        continue
    print("num = " + str(num))
    total += num

print("Total = " + str(total))
print("End")

その後で、次のように実行してください。

python sample6-2.py

continue文を使った繰り返し処理のスキップ(1)

リストの中の数値の要素だけを画面に出力し、最後に数値の合計を出力します。リストから要素を取得したときに文字列だった場合は continue 文でスキップしています。

-- --

while 文や for 文の中で break 文と continue 文の使い方について解説しました。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)
Profile
profile_img

著者 / TATSUO IKURA

初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。