概要

繰り返す回数が決まっていない場面で活躍する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のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る
