Pythonで繰り返し処理を行う際、for 文は「リストの要素数」や「指定した回数」だけ繰り返す場合に適しています。
対して、回数は決まっていないものの、「ある特定の条件が満たされている間はずっと処理を続けたい」という場合があります。例えば、「ユーザーが終了ボタンを押すまで待機する」や「バッテリー残量がなくなるまで稼働する」といったケースです。
このような「状態」に基づく繰り返し処理には、while 文を使用します。
この記事では、while 文の基本的な書き方と、使用する際の注意点について解説します。
while 文の基本構文
while 文は、直後に記述した条件式が True(真)である限り、ブロック内の処理を繰り返し実行し続けます。
構文:
while 条件式:
# 条件式が True の間、繰り返し実行される処理
# (インデントされたブロック)
処理の流れは以下の通りです。
- 条件式を評価する。
Trueならブロック内の処理を実行する。- 再び条件式を評価する。
Trueなら再度実行、Falseならループを終了して次の行へ進む。
具体的な使用例
例として、デバイスのバッテリー残量が一定値を下回るまで稼働し続けるプログラムを作成します。
# バッテリー残量 (初期値 100%)
current_battery = 100
# バッテリーが 20% より多い間はループを継続する
while current_battery > 20:
print(f"バッテリー残量: {current_battery}% - 正常稼働中")
# 処理ごとにバッテリーを 25% 消費する
current_battery -= 25
# ループ終了後の処理
print(f"バッテリー残量: {current_battery}% - 低電力モードに移行します。")
実行結果:
バッテリー残量: 100% - 正常稼働中
バッテリー残量: 75% - 正常稼働中
バッテリー残量: 50% - 正常稼働中
バッテリー残量: 25% - 正常稼働中
バッテリー残量: 0% - 低電力モードに移行します。
この例では、current_battery が 25 の時点までは条件(> 20)を満たすためループが実行されます。次の処理で 0 になった時点で条件が False となり、ループを抜けて最後のメッセージが表示されます。
重要な注意点:無限ループ
while 文を使用する際、最も注意しなければならないのが**「無限ループ」**です。
条件式が常に True のままで、いつまで経っても False にならない場合、プログラムは永遠にそのループから抜け出せなくなります(フリーズやクラッシュの原因となります)。
無限ループの例(実行注意):
count = 10
# count は減少しないため、永遠に 0 より大きいままとなる
while count > 0:
print("終わらない処理")
# ここで count を減らす処理を書き忘れている
while 文を書く際は、**「ループの中で、いつか必ず条件が False に変化する処理(変数の更新など)」**が含まれていることを必ず確認してください。
まとめ
while 条件式:の形式で記述します。- 条件が
Trueである間、処理を繰り返します。 - 処理回数が不明で、特定の「状態」を監視してループさせたい場合に適しています。
- 条件が永遠に
Falseにならない「無限ループ」に陥らないよう、ループ内で変数を適切に更新する必要があります。
