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文の違いを復習しつつ、その違いと使い分けについて詳しく解説します
Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
前提:break文の基本
Pythonのbreak
文は、現在のループを強制的に終了するためのものです。break
文が実行されると、そのループは即座に終了し、次のコードの実行に移ります。
簡単なbreak文の使い方を以下にサンプルで示します。
count = 0 while True: # 無限ループ print(count) count += 1 if count >= 5: break # countが5以上になったらループを抜ける
参考 whileループ / 変数の使い方 / if文 / 代入演算子(+=)
このように、break
文はループを制御する強力なツールで、プログラムが無限ループに陥るのを防ぐのに役立ちます。
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が表示されていません。
continue文の基本を学習しなおしたい方はこちらから。
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入門:学習カリキュラム ←こちらから!