Pythonのwhile文の使い方!無限ループとbreak・continueの活用
生徒
「Pythonで、ある条件が満たされるまで繰り返し処理する方法ってありますか?」
先生
「はい、そのときはwhile文を使います。条件がTrueのあいだ、ずっと処理を繰り返しますよ。」
生徒
「for文とはどう違うんですか?それと、無限ループって何ですか?」
先生
「その2つの違いや、breakとcontinueの使い方も合わせて、やさしく説明していきましょう。」
1. while文とは?条件が真のあいだ繰り返す構文
while文は、「ある条件がTrue(真)である限り、処理を繰り返す」ための構文です。ポイントは、最初に条件をチェックして、OKなら実行→また条件チェックをくり返すところです。
次のように書きます。
count = 0
while count < 3:
print("繰り返し中")
count += 1
繰り返し中
繰り返し中
繰り返し中
解説:最初はcountが0なので「3より小さい」が成り立ち、1回目が実行されます。実行の最後でcount += 1により1増え、次の判定へ進みます。これをくり返して、countが3になった時点で条件がFalseになり、ループが止まります。
つまりwhile文は、条件を満たす間だけ続けたい処理をシンプルに書けるのが特徴です。
2. for文との違いを理解しよう
for文は「回数が決まっている繰り返し」に使うのに対し、while文は「いつ終わるか分からないけど、条件が満たされている間は繰り返したい」というときに使います。
たとえば、正しい答えが入力されるまで繰り返す処理などに便利です。イメージとしては、for文は「最初から回数表がある」、while文は「合格するまで何度でもやる」と考えると分かりやすいです。
# for文:回数が決まっている(3回だけ表示する)
for i in range(3):
print("forで繰り返し")
# while文:条件を満たすまで続ける(3になるまで数える)
count = 0
while count < 3:
print("whileで繰り返し")
count += 1
forで繰り返し
forで繰り返し
forで繰り返し
whileで繰り返し
whileで繰り返し
whileで繰り返し
解説:for文のほうは「0〜2まで」のように回数(範囲)が最初から決まっているので、数えなくても自動で3回終わります。一方でwhile文は、countを自分で増やして条件をFalseにしないと終わりません。つまりwhile文は、入力待ちや判定チェックなど「終わり方が条件で決まる処理」に向いています。
3. 無限ループとは?while Trueの使い方
条件がずっとTrueだと、繰り返しが止まらなくなります。これを無限ループといいます。
たとえば以下のコードは、強制的に終了するまでずっと繰り返されます(画面に同じ文字が出続けます)。
while True:
print("ずっと実行されます")
実際に使うときは、break文で「終わる条件」を用意しておくことが重要です。次は、3回表示したら止まる無限ループの例です。
count = 0
while True:
print("ずっと…のつもりでも止められる")
count += 1
if count == 3:
break
ずっと…のつもりでも止められる
ずっと…のつもりでも止められる
ずっと…のつもりでも止められる
解説:while Trueは「条件が常にTrue」なので、そのままだと永遠に続きます。そこで回数を数えて、count == 3になったタイミングでbreakして終了させています。無限ループは入力待ちやメニュー処理でもよく使われるので、「止める出口」をセットで覚えると安心です。
4. break文でループを途中で抜ける
break文は、条件に関係なくループから抜けるための命令です。
次の例では、「exit」と入力されたらループを抜けます。
while True:
text = input("文字を入力(exitで終了):")
if text == "exit":
break
print("入力された文字:", text)
文字を入力(exitで終了):hello
入力された文字: hello
文字を入力(exitで終了):exit
5. continue文で次のループへスキップ
continue文は、その回の処理だけをスキップして、次の繰り返しに進むために使います。
偶数だけをスキップして奇数だけ表示する例です。
num = 0
while num < 5:
num += 1
if num % 2 == 0:
continue
print(num)
1
3
5
6. 入力チェックでwhile文を活用しよう
while文は、正しい入力がされるまで繰り返すという用途にも向いています。
以下は、年齢が数字かどうか確認する処理です。
while True:
age = input("年齢を入力してください:")
if age.isdigit():
break
print("数字で入力してください")
print(f"あなたの年齢は {age}歳です")
年齢を入力してください:abc
数字で入力してください
年齢を入力してください:25
あなたの年齢は 25歳です
7. 無限ループの注意点と対策
無限ループは便利な反面、条件を書き間違えると処理が止まらなくなる危険があります。
次のようなコードは、countを増やし忘れているため、永遠に終わりません。
count = 0
while count < 5:
print(count)
# count += 1 を忘れてしまった!
実行すると止まらなくなってしまうので、ループの条件や変数の更新には注意しましょう。
8. while文でゲームっぽい処理も書ける
while文は「正解するまで繰り返す」といったゲーム的な処理にも使えます。
以下は簡単な数当てゲームの例です。
secret = "7"
while True:
guess = input("1〜9の数字を当ててください:")
if guess == secret:
print("正解です!")
break
else:
print("違います!もう一度!")
1〜9の数字を当ててください:3
違います!もう一度!
1〜9の数字を当ててください:7
正解です!
まとめ
Pythonのwhile文は、条件が真である限り繰り返し処理を続けられる強力な構文であり、入力チェックやゲーム的な流れ、無限ループを活用した対話処理など多くの場面で役立ちます。とくに条件式の書き方や変数更新の有無によって繰り返しが正しく終了するかどうかが決まるため、プログラム全体の安定性にも関わる重要な要素です。実際の開発では、for文では表現しづらい「いつ終わるかわからない処理」や「状況に応じてループを抜ける処理」を柔軟に書ける点がwhile文の大きな特徴となります。 また、break・continueを使うことで、ループ内の流れを細かく制御し、より複雑な処理構成にも対応できます。breakはループを即座に終了させたいとき、continueは特定の条件のときだけ現在の処理を飛ばしたいときに活用され、入力値の検証や特定条件のスキップなど、効率的なアルゴリズムにつながります。とくに無限ループを使う場合は、適切な終了条件やbreak文の設計が不可欠であり、意図しない停止不能状態にならないよう丁寧な変数管理が求められます。 while文は実践的な場面でも頻繁に使われ、ユーザーが「正しい入力をするまで待つ処理」や「条件達成まで繰り返すロジック」など、多様なプログラムに応用できます。実際、本記事にある数当てゲームのように、ユーザー操作とループの組み合わせによってシンプルながら動きのある処理が実現でき、学習段階でも理解しやすい構造になっています。初心者がwhile文を習得することで、Pythonの制御構文の幅が大きく広がり、実用的なアルゴリズムが書けるようになっていくでしょう。
サンプルプログラム(まとめ用)
以下は、while文・break・continueを組み合わせた総まとめ的な例です。
count = 0
while True:
count += 1
if count % 2 == 0:
continue
print("現在のカウント:", count)
if count >= 9:
break
このサンプルでは、continueで偶数をスキップし、奇数だけを表示しながら、countが一定値に達した時点でbreakでループを終了します。while文の本質である条件制御と繰り返しの流れを理解するうえで非常に良い練習になります。
生徒
「今日の内容で、while文がどういうときに便利なのかよく分かりました!条件が真のあいだずっと続けられる仕組みがすごく使いやすいですね。」
先生
「そうですね。とくに入力のチェックや、正しい値が入るまで繰り返す処理では力を発揮します。for文では対応しづらい処理もwhileなら自然に書けます。」
生徒
「無限ループって怖いイメージがあったんですが、breakを使えば安全に抜けられるんですね。またcontinueで一部の処理を飛ばせるのも便利です。」
先生
「その通りです。無限ループは使い方を誤ると止まらなくなることがありますが、正しく制御すれば非常に強力な技術になります。変数の更新や条件の見直しを常に意識しましょう。」
生徒
「数当てゲームの例みたいに、実践的で楽しさのあるプログラムも作れるのが嬉しいです。もっとwhile文を使った練習をしてみたいです!」
先生
「いいですね。while文はプログラミングの幅を広げる重要なステップです。入力処理・条件分岐・繰り返し制御を組み合わせて、より自由なコードを書けるよう練習していきましょう。」