これまでfor文while文といった、繰り返し処理の使い方を学習してきました。その中で、条件を満たした時に繰り返し自体を完全に終了させる break についても触れました。今回は、繰り返しを完全に終わらせるのではなく、特定の条件の時だけ、その回の処理をスキップして次の繰り返しに進むことができる便利な機能「continue(コンティニュー)文」について解説します。

continue文とbreak文の違い

繰り返し処理を制御する文として、以前break 文について学びました。continuebreakはどちらも繰り返し処理の途中で動きを変えるための命令ですが、その働きは異なります。

  • break文: 繰り返し処理そのものを完全に終了して、ループの外に抜け出します。
  • continue文: 現在行っているその回(1回分)の処理だけをスキップし、すぐに次の繰り返し処理に移ります。

例えば、「1から10まで数える」という処理の中で「3の倍数」の時にこれらの命令を実行したとしましょう。breakの場合は、「1, 2」と表示されたところで繰り返し自体が強制終了しますが、continueの場合は「1, 2, (3をスキップ), 4, 5, (6をスキップ), …」と、3の倍数以外の数字は最後まで処理が続きます。

continue文を使用する

Pythonでcontinue文を使うには、if文などの条件式の下にインデントをしてcontinueとだけ記述します。なので例としてcontinue文は、

for 変数 in リストなど:
    if スキップしたい条件:
        continue
    条件に当てはまらなかったときの通常の処理

の形式で記述します。この例ではインデントは半角スペース四つで行っています。統一しているならインデントは半角スペース二つなどでも構いません。

Pythonが繰り返し処理を実行している最中にこのcontinueという命令に出会うと、そこで実行を中断し、すぐにループの先頭に戻って次のデータの処理から再スタートします。

continueが実行された瞬間、それより下に書かれているコード(上記の例でいう「条件に当てはまらなかったときの通常の処理」)はすべて無視されます。これを利用することで、「エラーになるデータだけを飛ばす」や「特定の文字が含まれている時だけ何もしない」といったプログラムのコントロールが簡単になります。

では、実際にやってみましょう。
Google Colaboratory (Colab) を開いて新しいノートブックを作成し、1から10までの数字から「3の倍数」だけをスキップするプログラムを書いてみます。

# 1から10までの数字のリストを用意する
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(" --- 処理を開始 --- ")

# リストから1つずつ数字を変数numに取り出す
for num in numbers:
  # もしnumが3で割り切れたら(3の倍数なら)スキップする
  if num % 3 == 0:
    print(f"{num}はスキップします")
    continue # ここで処理を中断し、次のループへ戻る

  # continueされなかった場合のみ実行される
  print(f"現在の数字は{num}です")

print(" --- 処理を終了 ---")

とセルに入力して実行してみましょう。すると結果は

— 処理を開始 —
現在の数字は1です
現在の数字は2です
3はスキップします
現在の数字は4です
現在の数字は5です
6はスキップします
現在の数字は7です
現在の数字は8です
9はスキップします
現在の数字は10です
— 処理を終了 —

のように表示されます。

プログラムの解説

  • リストとループの準備(2~7行目): 変数numbersに1~10までの数字が入ったリストを用意し、for文で順番に数字を変数num に取り出しています。
  • スキップする条件の判定(9行目): if num % 3 == 0: で、取り出した数字が3で割り切れる(つまり3の倍数である)かどうかを判定しています。
  • continueの実行(10~11行目): もし3の倍数だった場合、メッセージを表示した直後に continue が実行されます。これが実行されると、14行目のprint関数は無視され、すぐにfor文の先頭に戻って次の数字の処理が始まります。
  • 通常の処理(14行目): continueが実行されなかった(3の倍数ではない)時だけ、この行に到達して数字が表示されます。

[比較] break文を使った場合

先ほどのプログラムの continue の部分を、以前学習した breakに書き換えると動きがどう変わるのか、比較して確認してみましょう。

Colabの新しいセルに以下のコードを入力して実行してみてください。

# 1から10までの数字のリストを用意する
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(" --- 処理を開始 --- ")

# リストから1つずつ数字を変数numに取り出す
for num in numbers:
  # もしnumが3で割り切れたら(3の倍数なら)スキップする
  if num % 3 == 0:
    print(f"{num}なので強制終了します")
    break # ここで繰り返し処理を強制終了する

  # continueされなかった場合のみ実行される
  print(f"現在の数字は{num}です")

print(" --- 処理を終了 ---")

とセルに入力して実行してみましょう。すると結果は

— 処理を開始 —
現在の数字は1です
現在の数字は2です
3なので強制終了します
— 処理を終了 —

のように表示されます。

プログラムの解説(breakの場合)

  • breakの実行(10~11行目): 最初の3の倍数である「3」を取り出した瞬間、条件に当てはまり break が実行されます。

continueの時は残りの「4, 5, …」と処理が続いていきましたが、breakの場合はそこで繰り返し処理そのものが完全に終了するので、4以降の数字は一切表示されずにプログラムが終わっていることが分かります。

このように、同じ条件でもcontinue(スキップして続ける)とbreak(完全に終わる)では違う結果になります。目的に合わせて使い分けましょう。

まとめ

今回は、繰り返し処理の中で特定の条件の時だけ処理をスキップできる「continue文」について解説しました。

  • continue文の役割: 繰り返し処理の途中で、「その回の処理だけをスキップ」して次の繰り返しに進むための命令。
  • break文との違い: 完全にループを終わらせる break と違い、処理自体は最後まで継続される。
  • 動作の仕組み: continue が実行された瞬間、それより下に書かれているループ内のコードは無視され、すぐに次のループの先頭に戻る。

この機能を使いこなせるようになると、無駄な処理を省いて効率的なプログラムが書けるようになります。いろいろな条件でスキップするプログラムを試してみてください。

open-in-colab

今回はこれで終了です。
今回のサンプルを用意したので、もし必要な場合は上の「Open in Colab」と書いてあるボタンをクリックしてください。なおそのままだと編集不可なので編集をしたい場合は「ドライブにコピー」をクリックしてコピーしてください。
なおGoogle ColaboratoryについてわからなかったらGoogleColaboratoryを使ってみよう_導入編をご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA