この記事では、Pythonのwhile文の使い方について解説します。
while文は、指定された条件が真(True)である限りブロック内のコードを反復的に実行する制御構文です。イテラブルを用いてループ処理するfor文とは異なった使い方ができます。
また、その性質から無限ループとして使われることが多々あります。
それでは、while文の使い方を見ていきましょう!
while文の使い方
基本的なwhileループの構造は次のようになります。
while 条件式: # 反復する処理
指定した条件式が真(True)である限りブロック内の処理が反復して実行されます。条件式が偽(False)と評価されるとループは終了し、whileブロックの後のコードが実行されます。
以下のコードは、iが3未満の間、ループ処理されます。
i = 0 # i が 3 未満だった場合 True while i < 3: # i を出力 print(i) # i をインクリメント i += 1
実行結果
0 1 2
上記コードでは、iという変数を 0 で初期化し、その値が3未満である限りループは続けられます。ループの中で現在のiの値を出力し、iをインクリメント(iの値を 1 増やす)します。iの値が3以上になるとi < 3の条件は偽になり、ループは終了する。
- インクリメントをprint()の前にするか後にするかで出力される値が変わってきます。ループ処理では操作の順番が結構重要なので注意しておきましょう。
- 条件式について → オブジェクトを比較する方法【比較演算子】
先に条件式が評価されるため、初めから偽(False)と評価される条件だと1度もブロック内の処理が実行されないこともあります。
i = 10 # i は 3 よりも大きいので False while i < 3: print(i) i += 1
i(10) < 3は偽(False)なので1度もwhile文ブロックが実行されませんでした。
while文の使い道
while文は、具体的な繰り返し回数が決まっておらず、特定の条件が満たされるまで操作を続ける必要があるときに使われます。
例えば、以下のコードはユーザーからの適切な入力を得るまで無限ループします。無限ループとbreakについては後述します。
while True: user_input = input("操作を続けますか? [はい, いいえ]: ") if user_input in {'はい', 'いいえ'}: break
実行結果
操作を続けますか? [はい, いいえ]: あ 操作を続けますか? [はい, いいえ]: いいえ
ただし、可能な場合はfor文を使う方が推奨されています。なので、まずはfor文で実装できるか考えてみて難しそうならwhile文を使いましょう!
反復のスキップ: continue
while文のブロック内にcontinueステートメントを記述することで、continueステートメントが実行された際の反復をスキップし、次の反復をすぐに開始することができます。
以下では、iが3の時にcontinueステートメントが実行され、処理をスキップしています。
i = 0 while i < 5: i += 1 if i == 3: print('continue') continue print(i)
実行結果
1 2 continue 4 5
上記コードでは、iが 3 になった際にcontinueが実行されます。そうすることでcontinueより下に記述されているprint()は処理されずにスキップされ、次の反復が開始されます。
if文と組み合わせることで特定の条件の時のみ処理をスキップさせることができます。
ループの終了: break
while文のブロック内にbreakステートメントを記述することで、breakステートメントが実行された際にループを即座に終了させることができます。
以下では、iが3になったらbreakステートメントが実行され、ループが即座に終了します。
i = 0 while i < 5: i += 1 if i == 3: print('break') break print(i)
実行結果
1 2 break
if文と組み合わせることで特定の条件でループを終了させることができます。breakは無限ループを終了させるためによく使用されます。
ちなみに、ループがネストされている(ループの中にループがある)場合、breakは最も内側のループのみを終了させます。
無限ループ
while文の条件式に常に真(True)な値を指定すると無限ループさせることができます。
注意
無限ループは実行するとその名の通り無限にループしてしまうので、ターミナルやコマンドプロンプトから実行した場合は、Ctrl + Cで実行を中止しましょう!
以下のコードは、iを1ずつ増やして、それを無限に出力し続けるだけのプログラムです。実行すると物凄いスピードで値が出力されていきます。
i = 0 while True: print(i) i += 1
途中で処理を終わらせたい場合には、breakを使います。
i = 0 while True: if i == 3: break print(i) i += 1
iが3になった時にbreakが処理され、while文を終了させます。
後処理: else節
else節を定義することでwhile文の条件式が偽だった場合、else節の処理を実行してからループを終了するようにできます。
i = 0 while i < 3: print(i) i += 1 else: print("終了")
実行結果
0 1 2 終了
つまりは、ループが終わった直後にやっておきたい処理を定義できます。
ちなみに、break文を使ってループ処理を終了した場合、else節の処理は実行されないので注意してください。
do...while文
ほかの言語でよく使われているdo...while文はPythonには存在しません。do...while文は、条件に関わらず必ず1度は実行されるwhile文となっています。
Pythonでは、無限ループとbreakを組み合わせることで同じようなコードを実装できます。
while True: # なにかしらの処理 if 条件式: break
例えば、以下のような感じで使います。
num = 1 while True: print(num) num += 1 if num < 10: break
実行結果
1
まとめ
この記事では、Pythonのwhile文の使い方を解説しました!
ループ処理を実装しようと思った際には、まずはfor文での実装方法を考えてみて、無理そうならwhile文で実装を検討しましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ
- while 文 - Python 3.11.1 ドキュメント


