while文とは、繰り返し処理の1つで、指定された条件式がTrueの間は処理が繰り返し実行されます。そして、条件式がFalseになった時にwhile文は終了します。
このwhile文の繰り返し処理の中でbreakを挿入すると、強制的に繰り返し処理を抜けることができます。
このページでは、Pythonにおけるwhile文の様々な使い方の中でも、breakの使い方について、具体的な例も交えながら確認していきます。
break以外のwhile文の詳しい説明は、「図解!Python while文のループ処理を徹底解説!」を参照ください。
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!
Pythonにおけるwhile文の記述方法
まずはwhile文の基本的な記述方法からおさらいしていきましょう。while文とは、for文と同様、繰り返し処理の1つです。
条件式を指定し、その条件式がTrueの間はWhile文のブロック内の処理が繰り返し実行されますが、条件式がFalseになった時にwhile文は終了します。
記述方法は以下のとおりです。
while文に含まれる処理は、インデント(字下げ)して記述します(通常、インデントには半角スペース4つが使われます。)。処理が複数行ある場合も、全てインデントします。
インデントが終わると、while文の一連の処理は終わります。また条件式の後には、必ず :(コロン)を付けてください。
for文とwhile文は同じ繰り返し処理ですが、次の点が異なります。
- for文は回数を指定して、指定した回数分の繰り返し処理を行います。
- 一方でwhile文は、条件を指定して、その条件がTrueの間は繰り返し処理を行い、Falseになれば繰り返し処理を抜けます。
for文の詳しい説明は、「図解!Python for ループ文の徹底解説」を参照ください。
それではwhile文の例を見ていきましょう。
変数iに0を初期値として代入し、while文の条件としてiが3未満を指定しています。そして、printでiの値を表示し、iに1を加算しています。
1 2 3 4 | i = 0 while i < 3: print(i) i = i + 1 |
1
2
iが3になるまでは、指定された条件がTrueですので繰り返し処理を行う事になります。従ってprintで表示されるiの値は、0から2までになります。
この基本的な使い方を元に、breakの使い方を詳しく確認していきます。
breakでwhile文のループを抜ける方法
while文の繰り返し処理の途中で特定の条件を満たした場合、繰り返し処理を抜けたい時には、breakを使います。
変数aに0を代入し、while文でaに1を加算し、変数aの内容をprint()で出力しながら、10になるまで繰り返し処理をします。
この処理の途中、if文で変数aを3で割った余りが0、つまり3の倍数になった場合、処理を中止するようbreakを挿入します。
1 2 3 4 5 6 | a = 0 while a < 10: a = a + 1 if a % 3 == 0: break print(a) |
2
すると処理結果として、1、2と表示され、3になった時点でループを抜けていることがわかります
発売数10,000万本突破を記念して、今だけ期間限定で87%オフの大セール中!
while Trueによる無限ループでのbreakの使い方
他のプログラミング言語ではdo whileという構文があり、例えばC言語では以下のように記述します。
この構文では、処理は必ず1回は実行し、最後にwhile文の条件式で判定を行い、条件を満たしていれば、繰り返し処理を実行するというものです。
但し、Pythonではこのdo whileという構文が無く、必ず1回は処理を実行したい場合、while Trueとbreakを組み合わせるなど、別の方法を使って記述することになります。
while Trueとwhileの条件文にTrueを記述すると、条件が常にTrueになり、無限に繰り返し処理が続くことになります。そこで、実行したい処理に続けてif文とbreakを記述します。すると、if文の条件判定の前に処理があるので、必ず1回は実行されることになります。
例えば、次のようなwhile文があるとします。
1 2 3 4 | a = 0 while a < 3: print("aは{0}です。".format(a)) a = a + 1 |
aは1です。
aは2です。
ここでは、変数aが0から2まで処理が繰り返されています。ここで使われているprint、formatの詳しい説明は、「PythonにおけるPrint、Formatの使い方」を参照ください。
次に、変数aに代入する値を3に変更すると、while文の処理はスキップされ、処理結果には何も表示されません。
1 2 3 4 | a = 3 while a < 3: print("aは{0}です。".format(a)) a = a + 1 |
ここで、最低でも1回は処理を実行したい場合は、while Trueとif文を組み合わせて、次のように記述します。
1 2 3 4 5 6 | a = 3 while True: print("aは{0}です。".format(a)) a = a + 1 if a >= 3: break |
すると、最初の1回は処理が実行され、その後にif文の条件である変数aが3以上になり、breakでwhileのループを抜けています。
ポイント
関連記事です。
whileについてbreak以外の詳しい説明はこちらをご覧ください。
Pythonに関する重要なトピック全般について学んでいきたいと考えておられる方には、次のリンクをお勧めします。