Skip to content

4.4 whileによる反復処理

プログラムの中で同じ処理を何度も繰り返したい場合には、「ループ(反復処理)」を使用します。 Pythonでもっとも単純なループの仕組みが while です。

while は、指定した条件が True である限り、ブロック内の処理を繰り返し実行します。条件が False になるとループを終了し、次の処理へ進みます。

count = 1
# countが5以下の間、ループを繰り返す
while count <= 5:
print(count)
count += 1 # countを1ずつ増やす
# 出力:
# 1
# 2
# 3
# 4
# 5

ループの制御(breakcontinue

Section titled “ループの制御(break と continue)”

特定の条件を満たしたときにループの動きを変えるためのキーワードが用意されています。

break を使うと、ループが完了する前であっても、ただちにループから抜け出すことができます。 これは、while True: のような「無限ループ」を作り、特定の入力があったときだけ終了させるような場面でよく使われます。

while True:
stuff = input("String to capitalize [type q to quit]: ")
# 'q'が入力されたらループを終了する
if stuff == "q":
break
print(stuff.capitalize())

4.4.2 continue による次のイテレーションの開始

Section titled “4.4.2 continue による次のイテレーションの開始”

continue を使うと、その回の残りの処理をスキップして、すぐに次のループの先頭に戻り、条件チェックからやり直します。

while True:
value = input("Integer, please [q to quit]: ")
if value == 'q':
break
number = int(value)
# 偶数の場合はスキップ(continue)し、ループの先頭に戻る
if number % 2 == 0:
continue
# ここに到達するのは奇数の場合のみ
print(number, "squared is", number * number)

4.4.3 else による break のチェック

Section titled “4.4.3 else による break のチェック”

Pythonの while ループには、他の言語にはあまり見られない特殊で便利な機能として、オプションの else 節をつけることができます。

while ループの else は、**「ループが break で強制終了されず、条件が False になって正常に終了した場合」**にのみ実行されます。 これは、リストなどを検索し「見つからなかった場合」の処理を書くのに非常に便利です。

numbers = [1, 3, 5]
position = 0
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print('Found even number', number)
break # 偶数を見つけたらループを抜ける
position += 1
else:
# breakが一度も呼び出されずにループが完了した場合のみ実行される
print('No even number found')
# 出力: No even number found