基礎

Pythonのwhile文|条件付き繰り返し処理の使い方

while文は、指定した条件がTrueである間、処理を繰り返し実行する構文です。for文が「決まった回数の繰り返し」に適しているのに対し、while文は「条件が満たされるまで繰り返す」場合に適しています。

この記事では、while文の基本構文から、無限ループ、break・continueの使い方まで詳しく解説します。

基本的な使い方

while文は while 条件式: の形で書きます。条件式がTrueの間、ブロック内の処理が繰り返し実行されます。

Python
# カウントアップ
count = 0
while count < 5:
    print(f"count = {count}")
    count += 1

print("ループ終了")
実行結果
count = 0
count = 1
count = 2
count = 3
count = 4
ループ終了
無限ループに注意

条件が永遠にTrueのままだと、プログラムが終了しません。ループ内で必ず条件を変化させる処理(カウンタの更新など)を入れましょう。もし無限ループに陥った場合は、Ctrl+Cで強制終了できます。

whileとbreakの組み合わせ

while Trueで無限ループを作り、breakで脱出するパターンは非常によく使われます。

Python
# ユーザー入力を繰り返し受け付ける
# (実行例をシミュレーション)
commands = ["hello", "world", "quit"]
index = 0

while True:
    command = commands[index]  # 入力の代わり
    index += 1
    
    if command == "quit":
        print("終了します")
        break
    
    print(f"入力: {command}")
実行結果
入力: hello
入力: world
終了します

continueでスキップ

continueを使うと、現在の繰り返しの残りをスキップして、次の繰り返しに進みます。

Python
# 奇数のみ表示
num = 0
while num < 10:
    num += 1
    if num % 2 == 0:
        continue
    print(num, end=" ")
実行結果
1 3 5 7 9

while-else文

Pythonのwhile文にはelse節を付けることができます。ループが正常に終了した(breakしなかった)場合にelseブロックが実行されます。

Python
# breakなしで終了 → else実行
count = 0
while count < 3:
    print(count)
    count += 1
else:
    print("正常に終了しました")

print("---")

# breakで終了 → else実行されない
count = 0
while count < 3:
    if count == 1:
        print("breakで中断")
        break
    print(count)
    count += 1
else:
    print("この行は実行されません")
実行結果
0
1
2
正常に終了しました
---
0
breakで中断
for文とwhile文の使い分け

繰り返し回数が事前に決まっている場合はfor文、条件によって繰り返し回数が変わる場合はwhile文を使うのが基本です。リストや辞書の要素を処理するならfor文、ユーザーの入力待ちやゲームのメインループならwhile文が適しています。

実践的な使い方

Python
# 数当てゲーム(シミュレーション)
import random

answer = 42  # 正解
guesses = [20, 60, 42]  # プレイヤーの入力
attempts = 0

for guess in guesses:
    attempts += 1
    
    if guess == answer:
        print(f"正解! {attempts}回目で当たりました!")
        break
    elif guess < answer:
        print(f"{guess}: もっと大きい数です")
    else:
        print(f"{guess}: もっと小さい数です")
実行結果
20: もっと大きい数です
60: もっと小さい数です
正解! 3回目で当たりました!

まとめ

  • while 条件式: で条件がTrueの間繰り返し処理ができる
  • 無限ループを避けるため、ループ内で条件を変化させる
  • while True + break のパターンがよく使われる
  • continueで現在の繰り返しをスキップできる
  • 繰り返し回数が決まっているならfor文、条件次第ならwhile