PR

【Python】continue/breakの違いを1分で

Python

break文とcontinue文はどちらもループの制御を行うためのPythonの構文ですが、それぞれ異なる動作をします。

break

break文は現在のループを完全に終了します。break文が実行されると、その後のループの繰り返しは全てスキップされ、ループの直後のコードへと制御が移ります。

for i in range(5):
    if i == 2:
        break
    print(i)
# 出力: 0, 1

continue

この文は現在のループのイテレーション(一周)をスキップし、次のイテレーションに直接進みます。つまり、continue文の後に書かれたコードは実行されず、ループの次の繰り返しに直接進みます。

for i in range(5):
    if i == 2:
        continue
    print(i)
# 出力: 0, 1, 3, 4

このページでは、break文/continue文の違いを復習しつつ、その違いと使い分けについて詳しく解説します

このページで学べる内容
  • 【復習】break文 / continue文の基本
  • break文 / continue文の違い・使い分けのコツ

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

参考 Pythonの基本的な書き方・構文ルール

スポンサーリンク

前提:break文の基本

Pythonのbreak文は、現在のループを強制的に終了するためのものです。break文が実行されると、そのループは即座に終了し、次のコードの実行に移ります。

簡単なbreak文の使い方を以下にサンプルで示します。

count = 0

while True:  # 無限ループ
    print(count)
    count += 1
    if count >= 5:
        break  # countが5以上になったらループを抜ける

参考 whileループ / 変数の使い方 / if文 / 代入演算子(+=)

このように、break文はループを制御する強力なツールで、プログラムが無限ループに陥るのを防ぐのに役立ちます。

前提:continue文の基本

continue文は、ループ(forループまたはwhileループ)内で使われ、その実行により現在の繰り返し(ループの一周)をすぐに終了し、次の繰り返しに移行します。

言い換えると、「このループの残りの部分は実行せずに、次のループの繰り返しに直接移りたい」という場合に使われるのがcontinue文です。

for i in range(10):
    if i == 5:
        continue
    print(i)

# 出力結果→5のみ出力されない
# 0
# 1
# 2
# 3
# 4
# 6
# 7
# 8
# 9

参考 forループ / range関数 / if文 / 比較演算子

上記のコードでは、range(10)によって生成された0から9までの数字を順に表示しますが、if i == 5:の行にてiが5の場合、continueが実行されてその回のループ処理が中断されるため、次のイテレーション(iが6になる)に進みます。そのため、出力結果では5が表示されていません。

breakとcontinueの使い分け

ここまでの説明でbreak文とcontinue文の違いや使い分けは何となく理解できると思いますが、さらにプログラミング初心者向けに具体的なシーンを例に説明を掘り下げます。

break文の使用シーン

break文をよく利用する1つの例が「ユーザーからの入力を求める」ような場合です。

ユーザーが正しい入力を提供するまでプロンプトを表示し続け、正しい入力が得られたらループから抜け出す、といった具合です。

while True:
    password = input("パスワードを入力してください: ")
    if password == 'mypassword':
        print("正しいパスワードです。")
        break
    else:
        print("間違ったパスワードです。再度入力してください。")

この例では、ユーザーが正しいパスワードを入力するまで質問を繰り返し、ユーザーが正しいパスワードを入力したら、break文でループから抜け出します。

もし、ここでcontinue文を利用した場合、ループから抜け出すべきところでループが続けてしまいNG。

while True:
    password = input("パスワードを入力してください: ")
    if password == 'mypassword':
        print("正しいパスワードです。")
        continue  # 本当はbreakを使いたい
    else:
        print("間違ったパスワードです。再度入力してください。")

上記のコードでは、正しいパスワードが入力された時にcontinue文が実行されるため、無限にループが続いてしまいます。本来ならば、正しいパスワードが入力された時点でループから抜け出すべきです。

continue文の使用シーン

ァイルを行ごとに処理するスクリプトを考えてみましょう。各行に対して何らかの処理を行いたいが、コメント行(例えば '#'で始まる行)または空行はスキップしたいとします。

with open('myfile.txt') as f:
    lines = f.readlines()

for line in lines:
    # 空行またはコメント行をスキップ
    if line.strip() == '' or line.strip().startswith('#'):
        continue
    # 何らかの処理
    print(line)

参考 with文

この例では、continue文が空行またはコメント行をスキップするために使用されています。これらの行は処理をスキップし、ループの次の行に直接進みます。

このような場合に逆にbreak文を利用してしまうとループから完全に脱出してしまうので、本来なら続けてほしい処理が止まってしまいます。

with open('myfile.txt') as f:
    lines = f.readlines()

for line in lines:
    # 空行またはコメント行でループを終了
    if line.strip() == '' or line.strip().startswith('#'):
        break  # 本当はcontinueを使いたい
    # 何らかの処理
    print(line)

上記のコードでは、break文が空行またはコメント行でループを完全に終了してしまうため、その後の行が処理されません。本来はその行だけをスキップし、次の行に進むべきですが、break文の誤用により、最初の空行またはコメント行を見つけた時点で全ての処理が終了してしまいます。

これらの例から分かるように、break文とcontinue文はそれぞれ異なる目的を持っていて、それらを間違えて使うと予期しない結果を引き起こすことがあるため、明確な使い分けが必要です。

Pythonを1から学習したい方は

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
blank
ビズドットオンライン
タイトルとURLをコピーしました