Python × 入門 | #11 whileループで繰り返そう

0-9と0-10では for ループを使い、回数や範囲が決まっている繰り返しを書きました。今回学ぶ while ループは、回数ではなく条件で繰り返しを決めます。

たとえば「合計が100を超えるまで入力を続ける」「正しい合言葉が入るまで質問する」「ゲームが終了していない間だけ処理を続ける」といった場面では、for より while のほうが自然です。

whileループで条件を満たす間繰り返そう

まずはPycoBlocksを開こう

下のPycoBlocksで直接作業するか、別タブで開き、生成されるPythonコードを見ながら進めてください。

用語 意味
while 条件が True の間、処理を繰り返す構文 while x <= 5:
無限ループ 条件が変わらず True のままになること。条件に使う値の更新を忘れると発生する x = x + 1 の忘れ
番兵(sentinel) ループを終了させる目印となる特別な値。0・空文字などが使われる while password != "python":

ステップ1:while は「条件が True の間」繰り返す

while 条件: は、条件が True の間だけ中の処理を繰り返します。条件が False になった時点で、ループの外へ進みます。

whileで1から5まで表示
x = 1
while x <= 5:
    print(x)
    x = x + 1

この例では、最初に x = 1 としておきます。x <= 5 が成り立つ間は print(x) を実行し、そのあと x = x + 1 で x を1つ増やします。x が6になると条件が False になり、ループは止まります。

ステップ2:while では「値を変える処理」が特に大切

while で最も多い失敗は、条件に使っている値を変え忘れることです。値が変わらないと、条件がいつまでも True のままになり、ループが終わりません。

更新を忘れた while の例(無限ループになる)
x = 1
while x <= 5:
    print(x)
    # x = x + 1 を忘れると、ずっと x は 1 のまま

PycoBlocksでは実行ステップ数に上限があり、終わらないループは途中で止まります。これはブラウザを守るための仕組みです。while を書くときは、「いつ条件が False になるのか」を必ず確認します。

ステップ3:入力が条件を満たすまで繰り返そう

while は、入力と組み合わせると便利です。次の例は、合言葉が python になるまで入力を続けるプログラムです。

合言葉が合うまで繰り返す
password = ""
while password != "python":
    password = input("合言葉は?")
print("OK!")

最初に password = "" としておくのは、while password != "python": の条件で password を使うためです。まだ入力していない変数を条件に使うことはできません。

ステップ4:for と while を使い分けよう

for は「何回繰り返すか」が先にわかっているときに向いています。一方、while は「いつ終わるかは実行してみないとわからない」ときに向いています。

# for が向いている例:1から10まで表示
for i in range(1, 11):
    print(i)

一方、合計が一定の値を超えるまで入力を続けるような処理は、何回繰り返すかが事前にわかりません。こういった場面では while が自然です。

合計が10以上になるまで入力
total = 0
while total < 10:
    n = int(input("足す数は?"))
    total = total + n
    print(total)

0-10で学んだ range(start, stop, step) は、範囲が決まっている反復に強い書き方です。while は、入力・センサー値・ゲームの状態など、条件が毎回変化する処理に強い書き方です。

コーディングモードで書いてみよう

コードで書くと、while の設計ポイントは「初期化」「条件」「更新」の3つだとわかります。

# 初期化
total = 0

# 条件
while total < 100:
    n = int(input("加算する点数: "))

    # 更新
    total += n
    print("現在の合計:", total)

print("100以上になりました")

total += ntotal = total + n の短い書き方です。while文では「初期化」「条件」「更新」の3つをセットで設計すると、終わらないループを防げます。

演習課題

演習では 0-7 で学んだ if 文を while ループの中で組み合わせます。条件に応じて処理を変えながら繰り返す書き方を練習します。

課題11-1:1から5まで表示しよう

while を使って、1, 2, 3, 4, 5 を1行ずつ表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:1から5まで表示
x = 1
while x <= 5:
    print(x)
    x = x + 1

解説: x = x + 1 があるため、x は 1→2→3→4→5→6 と変化します。6になった時点で x <= 5 が False になり、ループが終わります。

課題11-2:10から1までカウントダウンしよう

while を使って 10, 9, 8, ... 1 と表示し、最後に「発射!」と表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:カウントダウン
x = 10
while x >= 1:
    print(x)
    x = x - 1
print("発射!")

解説: x = x - 1 で値を減らしている点がポイントです。print("発射!") はインデントを外し、ループ終了後に1回だけ実行します。

課題11-3:合言葉が合うまで入力を続けよう

入力された文字列が "python" になるまで質問を続け、正しく入力されたら OK! と表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:合言葉ループ
password = ""
while password != "python":
    password = input("合言葉は?")
print("OK!")

解説: 最初の password = "" は初期化です。whileの条件で使う変数は、ループに入る前に必ず用意しておきます。

課題11-4:合計が100以上になるまで足し続けよう

整数を入力し、その値を合計に足していきます。合計が100以上になったらループを止め、最後の合計を表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:合計が100以上まで足す
total = 0
while total < 100:
    n = int(input("足す数は?"))
    total = total + n
print("最終合計:", total)

解説: total < 100 が True の間だけ入力を続けます。入力された値によって何回繰り返すかが変わるため、forよりwhileが自然です。

課題11-5:0が入力されるまで平均を計算しよう

正の整数を何個か入力します。0が入力されたら入力を終了し、それまでに入力された数の合計・個数・平均を表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

whileループで入力値の平均を求めるブロック例
total = 0
count = 0
n = int(input("数を入力(0で終了): "))

while n != 0:
    total = total + n
    count = count + 1
    n = int(input("数を入力(0で終了): "))

if count > 0:
    print("合計:", total)
    print("個数:", count)
    print("平均:", total / count)
else:
    print("データがありません")

解説: 0を「終了の合図」として使う考え方を番兵(sentinel)と呼びます。0自身は合計に含めないため、whileの中で加算する前に n != 0 を確認しています。

課題11-6:数字当てゲームを作ろう

答えを7に固定し、ユーザーが正解するまで入力を続ける数字当てゲームを作ってください。入力が小さすぎるときは「もっと大きい」、大きすぎるときは「もっと小さい」と表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

数当てゲームを作るブロック例
answer = 7
guess = 0

while guess != answer:
    guess = int(input("1〜10の数字を予想: "))
    if guess < answer:
        print("もっと大きい")
    elif guess > answer:
        print("もっと小さい")

print("正解!")

解説: 0-7で学んだ if / elif と while を組み合わせています。正解するまで何回入力するかは人によって変わるため、whileが向いています。

まとめ

  • while 条件: は、条件が True の間だけ処理を繰り返す
  • whileでは「初期化」「条件」「更新」の3点を必ず確認する
  • 条件に使う値を変え忘れると、ループが終わらない
  • for は回数や範囲が決まっている反復、while は終了条件で決まる反復に向いている
  • 入力を繰り返す処理では、終了の合図(例:0や合言葉)を決めると設計しやすい

次は リスト を学びます。複数の値をまとめて持てるようになると、forやwhileで扱えるデータが一気に増えます。→ Python × 入門 | #12 リストにデータをまとめよう

PAGE TOP