プログラミング

Step 12: もう一つの繰り返し「while文」の使い方

Step 12: もう一つの繰り返し「while文」の使い方

概要

フリーランスエンジニア スリーネクスト

繰り返す回数が決まっていない場面で活躍するPythonの「while文」を徹底解説します。条件がTrueである間だけ処理を続ける基本構文から、for文との明確な使い分けまでを説明。

while文で最も重要な「無限ループ」の危険性と回避方法を強調し、while True:とbreakを組み合わせたユーザー入力の待ち受けなど、実践的なコードパターンを紹介します。処理の流れを視覚的に理解できるMermaid図を多用し、条件ベースの繰り返し処理を確実に習得できます。

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!

続きを見る

はじめに

前回のStep 11では、リストやrange()関数など、あらかじめ繰り返す回数や範囲が決まっている場合に便利なfor文を学びました。しかし、プログラミングでは「特定の条件を満たすまで、何回になるか分からないけど処理を繰り返したい」という場面も多くあります。

例えば、

  • ユーザーが正しいパスワードを入力するまで、入力を何度も促す
  • ゲームでプレイヤーのHPが0になるまで、敵の攻撃を繰り返す
  • ファイルのダウンロードが完了するまで、進捗状況をチェックし続ける

このように、終了条件は決まっているが、それが何回後に訪れるか分からない、そんな繰り返し処理を得意とするのが**while文**です。

while文の基本的な仕組み

while文は、指定した条件式がTrueである間、ブロック内の処理を繰り返し実行し続けます。条件式がFalseになった瞬間に、ループは終了します。

基本的な形は以下の通りです。

while 条件式:
    # 条件式がTrueの間、繰り返し実行したい処理
    # (重要) いずれ条件式がFalseになるような処理もここに書く
  • while: 「〜する間」を意味し、これから条件に基づく繰り返しを始める合図です。
  • 条件式: TrueFalseを返す式(例: 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文との違いを明確にしておきましょう。

特徴forwhile
得意なことデータの集まり(リスト等)から要素を順番に取り出すある条件が満たされるまで処理を繰り返す
繰り返しの主体回数要素の数が主体条件が主体
主な用途リストの全要素処理、決まった回数の処理ユーザー入力の待ち受け、状態監視
イメージレシピ通りに決まった手順をこなすゴールにたどり着くまで試行錯誤を続ける

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
# ループが終了しました。

処理の流れ

  1. count1が代入されます。
  2. while文の条件式 count <= 5 (1 <= 5) が評価され、Trueになります。
  3. ループ内の処理が実行され、print(count)1が表示されます。
  4. count = count + 1が実行され、count2になります。
  5. 再び条件式 count <= 5 (2 <= 5) が評価され、Trueなのでループが続きます。
  6. ...この処理が繰り返されます...
  7. count5のとき、5 <= 5Trueなので、5が表示され、count6になります。
  8. 次に条件式 count <= 5 (6 <= 5) が評価されると、これはFalseになります。
  9. 条件式がFalseになったため、ループを抜け出し、最後のprint文が実行されます。

注意!無限ループの罠

while文で最も注意すべきは無限ループです。これは、条件式が永遠にFalseになることがなく、プログラムが終わりなく処理を繰り返してしまう状態です。

# 危険なコードの例(実行しないでください)
count = 1
while count <= 5:
    print("無限ループ中!")
    # countを更新する処理を忘れている!

上の例では、countの値が1のままずっと変わらないため、条件式 count <= 5 は常にTrueとなり、ループから抜け出せなくなります。もし誤って実行してしまった場合は、ターミナル(黒い画面)で Ctrl + C を押して強制終了してください。

while文を使うときは、必ずループ内で条件式に関わる変数が変化し、いつかはループが終了するように設計することが鉄則です。

breakcontinueの活用

while文でもfor文と同様にbreakcontinueが使え、より柔軟な制御が可能になります。

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 Truebreak: ユーザーの入力待ちなど、終了タイミングが不定な処理で頻繁に使われる便利なパターン。

for文とwhile文、この2つのループを使いこなすことで、Pythonで実現できる自動化の幅が大きく広がります。それぞれの得意な場面を見極めて、適切に使い分けられるようになりましょう。

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!

続きを見る

-プログラミング