Pythonでwhile
文により繰り返し処理をする方法について解説します。
Contents
while
文によるループ処理
Pythonで、繰り返し処理を行う場合には、while
文を使用できます。繰り返し処理でよく使用されるのはfor
文ですが、一定条件に一致する場合に処理を継続したい場合にはwhile
文の方が便利です。なお、for
文については「for文の基本的な使い方」を参考にしてください。
この記事では、Pythonにおけるwhile
文による繰り返し処理をする方法の基本について解説します。
while
文の基本的な使い方
Pythonにおけるwhile
文の構文は以下になります。
while 条件式: 処理コード...
while
文は、条件式がTrue
の間、処理を繰り返します。以下の使用例を見ながらwhile
文の使い方を確認しましょう。
# while文 count = 1 while count <= 5: print(f'count: {count}') count += 1
【実行結果】 count: 1 count: 2 count: 3 count: 4 count: 5
上記例では、count
が5
以下の場合は、count
値のprint
を繰り返します。
while
文は条件式の真(True
)/偽(False
)により繰り返し処理を実行するため、条件がTrue
となり続けるような条件を指定すると、プログラムが終了しない無限ループ状態になってしまいますので注意してください。例えば、上記例でcount += 1
の記述を忘れると無限ループとなってしまいます。
break
文によるループの終了
while
文は条件がTrue
である限り繰り返しを継続します。条件を満たした時に処理を中断する際には、break
文を使用します。
なお、無限ループの特徴を利用して無限ループ状態を作り出し、条件を満たした場合にbreak
文で処理を中断するというような使い方はよくします。例えば、GUIアプリケーションのイベントーループやサーバーでのリクエストの受け付け、CUIツールでのユーザーからの入力の受け付けなどで利用されることが多いです。
break
文は以下のように使用します。
# breakでループを抜ける while True: value = input("値を入力してください(終了する場合は'q'): ") if value == 'q': break print(f'入力値は、{value}です。')
【実行結果例】 値を入力してください(終了する場合は'q'): 1 入力値は、1です。 値を入力してください(終了する場合は'q'): 2 入力値は、2です。 値を入力してください(終了する場合は'q'): 3 入力値は、3です。 値を入力してください(終了する場合は'q'): q
上記例は、ユーザーの入力を受け付け、入力値をprint
するCUIツールです。ユーザーからq
が入力されるまでは処理が継続され、q
が入力された時点でbreak文により繰り返し処理を抜けて処理を完了します。
continue
文による次のループへのジャンプ
上記で紹介したbreak
文は一定条件を満たす場合にwhile
文を終了する方法でした。一定条件を満たした場合に、以降の処理をスキップして次のループへ進みたい場合はcontinue
文を使います。
# continue文で次のループへ while True: value = input("偶数を入力してください(終了する場合は'q'): ") if value == 'q': break elif int(value) % 2 != 0: # 奇数の場合は次のループへ continue print(f'偶数の入力値は、{value}です。')
【実行結果例】 偶数を入力してください(終了する場合は'q'): 1 偶数を入力してください(終了する場合は'q'): 3 偶数を入力してください(終了する場合は'q'): 2 偶数の入力値は、2です。 偶数を入力してください(終了する場合は'q'): 4 偶数の入力値は、4です。 偶数を入力してください(終了する場合は'q'): q
上記例では、入力が偶数の場合は値をprint
で表示し、奇数の場合は処理をスキップして次のループへ進みます。実行結果を見ると、奇数の場合には値が表示されていないことが分かります。
else
による正常終了の確認
while
文の処理が正常に終了しているかを確認したい場合には、else
で確認することができます。正常終了と言っているのは「break
文が実行されていない」ということです。
以下の例で確認してみましょう。
# 正常終了する場合 data = ['A', 'B', 'C'] idx = 0 while idx < len(data): if data[idx] == 'Z': break print(f'data[{idx}] = {data[idx]}') idx += 1 else: print('処理正常終了') print('=====') # 正常終了しない場合 data = ['A', 'B', 'Z', 'C'] idx = 0 while idx < len(data): if data[idx] == 'Z': break print(f'data[{idx}] = {data[idx]}') idx += 1 else: print('処理正常終了')
【実行結果】 data[0] = A data[1] = B data[2] = C 処理正常終了 ===== data[0] = A data[1] = B
上記例は、前半部分は「break
文が呼び出されないケース」、後半部分は「break
が呼び出されて処理を抜けるケース」となっています。
前半の処理では、break
文が呼び出されないのでelse
の処理に入り"処理正常終了"
というprint
が実行されています。一方で後半の処理ではbreak
文が呼び出されているのでelse
の処理に入っていないことが分かります。
このようにbreak
文の実行有無を確認するのにelse
は便利です。
まとめ
Pythonでwhile
文により繰り返し処理をする方法について解説しました。
while
文は、一定条件に一致する場合に処理を繰り返す場合に便利です。break
文やcontinue
文などを使うことで柔軟に繰り返し処理を実装することができます。
条件に一致する限り繰り返しを継続するため、無限ループにならないように条件に注意が必要です。なお、無限ループをあえて使用してGUIのイベントループなどを実装するといったことはよく行われます。
while
文は、Pythonに限らず多くのプログラム言語における重要な制御構文です。しっかりと使い方を覚えて使えるようにしましょう。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。