概要

繰り返す回数が決まっていない場面で活躍するPythonの「while文」を徹底解説します。条件がTrueである間だけ処理を続ける基本構文から、for文との明確な使い分けまでを説明。
while文で最も重要な「無限ループ」の危険性と回避方法を強調し、while True:とbreakを組み合わせたユーザー入力の待ち受けなど、実践的なコードパターンを紹介します。処理の流れを視覚的に理解できるMermaid図を多用し、条件ベースの繰り返し処理を確実に習得できます。
-
ゼロから始めるPython学習 STEP20目次
プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る
目次
はじめに
前回のStep 11では、リストやrange()
関数など、あらかじめ繰り返す回数や範囲が決まっている場合に便利なfor
文を学びました。しかし、プログラミングでは「特定の条件を満たすまで、何回になるか分からないけど処理を繰り返したい」という場面も多くあります。
例えば、
- ユーザーが正しいパスワードを入力するまで、入力を何度も促す
- ゲームでプレイヤーのHPが0になるまで、敵の攻撃を繰り返す
- ファイルのダウンロードが完了するまで、進捗状況をチェックし続ける
このように、終了条件は決まっているが、それが何回後に訪れるか分からない、そんな繰り返し処理を得意とするのが**while
文**です。
while
文の基本的な仕組み
while
文は、指定した条件式がTrue
である間、ブロック内の処理を繰り返し実行し続けます。条件式がFalse
になった瞬間に、ループは終了します。
基本的な形は以下の通りです。
while 条件式: # 条件式がTrueの間、繰り返し実行したい処理 # (重要) いずれ条件式がFalseになるような処理もここに書く
while
: 「〜する間」を意味し、これから条件に基づく繰り返しを始める合図です。条件式
:True
かFalse
を返す式(例:count < 5
,is_running == True
)。:
(コロン):for
文と同様、ここからが処理ブロックである合図です。- インデントされたブロック: 条件式が
True
の間、繰り返し実行される処理です。
while
文の処理の流れは、まるで関所のようです。関所(while
)を通るたびに「通行許可証(条件式がTrue
)を持っているか?」とチェックされ、持っていれば中(処理ブロック)に入れます。中の処理を終えると、また関所の前に戻ってきて、再びチェックを受ける、という流れを繰り返します。
graph TD A[ループ開始] --> B{"条件式は True?"}; B -- Yes (True) --> C[インデント内の処理を実行]; C --> B; B -- No (False) --> D[ループ終了];
while
文とfor
文の使い分け
ここで、for
文との違いを明確にしておきましょう。
特徴 | for 文 | while 文 |
得意なこと | データの集まり(リスト等)から要素を順番に取り出す | ある条件が満たされるまで処理を繰り返す |
繰り返しの主体 | 回数や要素の数が主体 | 条件が主体 |
主な用途 | リストの全要素処理、決まった回数の処理 | ユーザー入力の待ち受け、状態監視 |
イメージ | レシピ通りに決まった手順をこなす | ゴールにたどり着くまで試行錯誤を続ける |
Google スプレッドシートにエクスポート
for
文が「電車の路線図」のように、始点から終点まで決まった数の駅を順番に巡るイメージなら、while
文は「目的地(条件達成)までナビに従って進む」イメージです。目的地に着くまでに何回曲がるかは、その時の状況次第で変わります。
while
文の具体的な使い方
それでは、簡単な例でwhile
文の動きを見てみましょう。1から5までの数字を表示するプログラムです。
# カウンター用の変数を初期化 count = 1 # countが5以下である間、ループを続ける while count <= 5: print(count) # ★★重要★★ countを1増やす (この行がないと無限ループになる) count = count + 1 print("ループが終了しました。") # 実行結果 # 1 # 2 # 3 # 4 # 5 # ループが終了しました。
処理の流れ
count
に1
が代入されます。while
文の条件式count <= 5
(1 <= 5) が評価され、True
になります。- ループ内の処理が実行され、
print(count)
で1
が表示されます。 count = count + 1
が実行され、count
が2
になります。- 再び条件式
count <= 5
(2 <= 5) が評価され、True
なのでループが続きます。 - ...この処理が繰り返されます...
count
が5
のとき、5 <= 5
はTrue
なので、5
が表示され、count
は6
になります。- 次に条件式
count <= 5
(6 <= 5) が評価されると、これはFalse
になります。 - 条件式が
False
になったため、ループを抜け出し、最後のprint
文が実行されます。
注意!無限ループの罠
while
文で最も注意すべきは無限ループです。これは、条件式が永遠にFalse
になることがなく、プログラムが終わりなく処理を繰り返してしまう状態です。
# 危険なコードの例(実行しないでください) count = 1 while count <= 5: print("無限ループ中!") # countを更新する処理を忘れている!
上の例では、count
の値が1
のままずっと変わらないため、条件式 count <= 5
は常にTrue
となり、ループから抜け出せなくなります。もし誤って実行してしまった場合は、ターミナル(黒い画面)で Ctrl + C
を押して強制終了してください。
while
文を使うときは、必ずループ内で条件式に関わる変数が変化し、いつかはループが終了するように設計することが鉄則です。
break
とcontinue
の活用
while
文でもfor
文と同様にbreak
とcontinue
が使え、より柔軟な制御が可能になります。
break
:条件を満たしたら即ループを抜ける
while True
という意図的な無限ループを作り、特定の条件が満たされたらbreak
で脱出する、という書き方は非常によく使われます。
graph TD subgraph "while True ループ" A[処理を実行] --> B{"breakの条件が成立?"}; B -- Yes --> F[ループを強制終了]; B -- No --> A; end F --> G[ループ後の処理へ];
例えば、ユーザーが'quit'と入力するまで、入力を受け付け続けるプログラムです。
while True: user_input = input("何か入力してください ('quit'で終了): ") if user_input == 'quit': break # 'quit'が入力されたらループを抜ける print(f"入力された内容: {user_input}") print("プログラムを終了します。")
continue
:今回の処理をスキップする
continue
は、現在の回の処理を中断し、すぐに次のループの先頭(条件判定)に戻ります。
# 1から10までの奇数のみを表示する num = 0 while num < 10: num = num + 1 if num % 2 == 0: # 偶数の場合は... continue # ...以降の処理をスキップして次のループへ print(num)
この例では、num
が偶数のときにcontinue
が実行され、print(num)
がスキップされるため、結果的に奇数のみが表示されます。
まとめ
今回は、条件に基づいて繰り返しを行うwhile
文について学びました。
while
文の基本:while 条件式:
の形で、条件式がTrue
の間だけ処理を繰り返す。for
文との違い:for
は「回数」が主体、while
は「条件」が主体。- 無限ループの危険性: ループ内で条件式の状態を変化させ、いつかループが終わるように必ず設計する。
while True
とbreak
: ユーザーの入力待ちなど、終了タイミングが不定な処理で頻繁に使われる便利なパターン。
for
文とwhile
文、この2つのループを使いこなすことで、Pythonで実現できる自動化の幅が大きく広がります。それぞれの得意な場面を見極めて、適切に使い分けられるようになりましょう。
-
ゼロから始めるPython学習 STEP20目次
プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る