while文

【Python】while文の基本的な使い方

【Python】while文の基本的な使い方

Pythonでwhile文によるループ処理をする方法について解説します。

while文によるループ処理

Pythonでは、while文を用いることで繰り返し(ループ)処理を実行すること可能です。

本記事では、Pythonにおけるwhile文を使った繰り返し(ループ)処理の基本について紹介していきます。

なお、Pythonの繰り返し処理はfor文も使用できます。for文については「for文の基本的な使い方」でまとめていますので興味があれば参考にしてください。

for文はリストなどから要素を取り出しながら繰り返し処理をする場合に適していますが、一定条件に一致する場合に処理を繰り返したい場合はwhile文の方が便利です。

while文の基本的な使い方

Pythonにおけるwhile文の構文は以下になります。

while文
while 条件式:
    処理コード...

While文は、条件式の部分がTrueである限り処理を繰り返します。

では、簡単な例を見ながらPythonのwhile文の使い方を確認しましょう。

# while文
count = 1
while count <= 5:
    print(f'count: {count}')
    count += 1
【実行結果】
count: 1
count: 2
count: 3
count: 4
count: 5

上記例では、countを1ずつ増やして5以下の場合は、繰り返し(ループ)処理でcountの値をprintしています。

countが6になった時には、count <= 5の式の評価結果がFalseになるためループ処理を終了します。

このようにwhile文は条件式の真(True)/偽(False)によって繰り返しを実行するため、条件がずっとTrueになってしまうような条件を指定すると、プログラムが終了しない無限ループ状態になってしまいます。無限ループは、プログラム初心者の頃にはよく経験することのため注意が必要です。

break文によるループの終了

while文での繰り返し(ループ)処理では、一定の条件を満たした場合などにwhile文を抜けて次の処理に移りたい場合があります。

このような場合で、while文を途中で抜けるには、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する処理を、qが入力されるまで繰り返します。qが入力された場合には、break文で処理を抜けて全体の処理が完了していることが分かります。

上記のコマンド上でユーザーの入力を受け付ける場合等、一定条件に一致する限り処理を繰り返す場合には、while文の条件をTrueを設定して無限ループで実行しておき、一定条件に一致したらbreak文にてループを抜けるといった使い方をよくします。

continue文による次のループへのジャンプ

上記のbreak文は一定条件を満たす場合にwhile文の繰り返し(ループ)処理を抜けて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で表示し、奇数の場合は次の処理へ進むようになっています。終了時はqを入力してbreakでループを終了します。

奇数の場合には、continue文で次の処理に進んで、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文が呼び出されているので”処理正常終了”というprintをするelseの中に入っていないことが分かります。

このようにbreak文の実行有無を確認するのにelseは便利なものとなっています。

まとめ

Pythonでwhile文によるループ処理をする方法について解説しました。

基本的な使い方に加えて、breakでの終了やcontinueでの処理スキップ、elseによる正常終了の確認についても説明しました。

whileによる繰り返し(ループ)処理は、for文による繰り返し同様でプログラミングにおける中心的な処理であるため、しっかり使えるようにしましょう。