Pythonのwhile文の使い方!無限ループとbreak・continueの活用
生徒
「Pythonで、ある条件が満たされるまで繰り返し処理する方法ってありますか?」
先生
「はい、そのときはwhile文
を使います。条件がTrue
のあいだ、ずっと処理を繰り返しますよ。」
生徒
「for文とはどう違うんですか?それと、無限ループって何ですか?」
先生
「その2つの違いや、break
とcontinue
の使い方も合わせて、やさしく説明していきましょう。」
1. while文とは?条件が真のあいだ繰り返す構文
while文は、「ある条件がTrue
(真)である限り、処理を繰り返す」ための構文です。
次のように書きます。
count = 0
while count < 3:
print("繰り返し中")
count += 1
繰り返し中
繰り返し中
繰り返し中
この例ではcount
が3より小さいあいだだけ繰り返し処理され、最後に止まります。
2. for文との違いを理解しよう
for文
は「回数が決まっている繰り返し」に使うのに対し、while文
は「いつ終わるか分からないけど、条件が満たされている間は繰り返したい」というときに使います。
たとえば、正しい答えが入力されるまで繰り返す処理などに便利です。
3. 無限ループとは?while Trueの使い方
条件がずっとTrue
だと、繰り返しが止まらなくなります。これを無限ループといいます。
たとえば以下のコードは、強制的に終了するまでずっと繰り返されます。
while True:
print("ずっと実行されます")
実際に使うときは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
正解です!