Python : while 文の基本操作編(break、continue、else など)

TwitterFacebookHatena
  • 公開:2021-9-27
  • 更新:2023-10-26
  • 文章量:2018
  • Python

TL;DR

Python には for 文 と while 文 の 2 種類のループがある。while 文は条件を指定した処理の繰り返しである。式が真である間は処理を繰り返す。

while のポイント

while 条件式:
    繰り返す処理
  • 式が真である間は処理を繰り返す
  • continue は次のループに移る処理
  • break 文はループを抜けるときに使う
  • else 節は、while ループが終了時に、対象が見つからなかったときに実行
  • else 節は、 break 文でループを抜ける際は実行されない
  • while ループが break せずに終了したとき、else 節に渡される

次に示すのは、1 から 5 までの数値を表示するシンプルなループである。

i = 1
while i <= 5:
    print(i)
    i += 1

# 1
# 2
# 3
# 4
# 5

上に記述したプログラムを順に解説する。

  1. i に 1 を代入する
  2. i が 5 以下ならループを続ける
  3. i を表示
  4. i を 1 ずつ インクリメント(変数の値を 1 増やす) する
  5. ループの先頭に戻り繰り返す
  6. i が 6 になり最初の行に戻ると i <= 5 が False になり終了する

次に示すのは、ユーザーが名前を入力するまで、入力を促すループである。

i = ''
while not i:
    i = input('名前を入力してください : ')
print(f'おかえりなさい! {i} さん!')

# 名前を入力してください :
# 名前を入力してください : 花子
# おかえりなさい! 花子 さん!

break

break 文はループを抜けるときに使う。次に示すのは、input()関数を使い、キーボードの入力で stop が入力されるまで、先頭の文字を大文字に変換させる無限ループである。stop が入力されると break 文が返されループを抜ける。

while True の部分が無限ループになる。このループを終了させるには、ループ内に if 文を置いて、条件が満たされたら break 文を呼び出す。

while True:
    s = input('何か入力してください : ')
    if s == 'stop':
        break
    print(s.capitalize())

# 何か入力してください : abc
# Abc
# 何か入力してください : stop

continue

continue は次のループに移る処理である。ループを抜けるのではなく、次のイテレーション(反復処理の 1 回分)をすぐに再開したい場合は、continue を使う。現在の繰り返しをその時点で終了し、次の繰り返しの先頭にジャンプするものである。

次に示すのは、入力欄で、奇数の数値を入れると自乗し、偶数だとスキップされ、stop と入力すると終える処理である。

while True:
    i = input('数字を入力してください : ')
    if i == 'stop':
        break
    number = int(i)
    if number % 2 == 0:
        continue
    print(number * number)

# 数字を入力してください : 2
# 数字を入力してください : 3
# 9
# 数字を入力してください : 4
# 数字を入力してください : 5
# 25
# 数字を入力してください : stop

else

else 節は、while ループが終了したものの、見つからなかったときに実行される。

i = 0
while i < 3:
    print(f'{i}')
    i += 1
else:
    print('end')

# 0
# 1
# 2
# end

else と break

else は break 文でループを抜ける際には実行されない。while ループが break せずに終了したとき、else 節に渡される。

次に示すコードは、リストの要素数だけループを行い、要素に偶数があれば break、なければ else が返る。

numbers = [11, 83, 215, 899]
i = 0
while i < len(numbers):
    n = numbers[i]
    if n % 2 == 0:
        print('偶数発見')
        break
    i += 1
else:
    print('偶数が見つからない')

# 偶数が見つからない

Python : while 文の基本操作編(break、continue、else など)