【Python入門】while文の使い方や無限ループ(while true)の抜け方について解説

Pythonでは、while文にて指定した条件が真(True)の間、何度も同じ処理を実行することが可能です。

while文が活用できるようになれば、わざわざ同じコードを記述しなくても実行できるようになります。

この記事では、while文で無限ループを行う方法や、途中でwhile文を抜ける方法について解説します。

真偽値(True/False)については、こちらの記事で解説してます

目次

基本の使い方

while文の記述方法として、「実行条件(:の手前で記述)」の条件に応じて、条件が満たされている間(=True)処理内容を繰り返し実行します

その際指定する条件は、結果が真か偽か(True/False)の2択で表せるようにする必要があるため、演算子を用いて記述することが多いです。

演算子…計算や値の大小を比較する際に使用する記号・シンボル

また、Pythonではインデント(字下げ)した内容に対して「この部分がwhile文で行う処理」と認識する仕様になっています。

そのため、処理内容については必ず字下げを行うようにしてください

num = 0  # numという変数に、数値(0)を保持

while num < 3:  # 「numの値が3未満」を満たしている(=True)間、以下を繰り返し実行
    print(num)  # numの中身を表示
    num += 1  # numに1足しあわせる

= 実行結果 =

0
1
2

while文で無限ループをする方法

while文は、指定した条件が満たされている間(=True)のみ、処理を繰り返し実行します。

そのため、無限に処理をループさせたい場合は、実行条件を「True」に指定すれば問題ありません。

なお無限ループを使用する際は、後述するbreak文を使用して、繰り返しの終了条件を別に定めておく必要があります。

条件指定の応用例

while文では1つの実行条件だけでなく、様々な条件に応じて処理を指定・実行することが可能です。

【and/or演算子】一度に複数の条件を指定

一度に複数の条件を指定する際は、andあるいはor演算子を使用します。

andでは、双方の条件が両方真(=True)の場合のみ、while文の処理内容を実行します。

またorは、複数条件のうちどちらか一方でも真の場合に実行する演算子です。

num = 0  # numという変数に、数値(0)を保持

while num >= 0 and num < 3:  # numが0以上かつ3未満の場合、処理を実行
    print(f"and: 0 <= {num} < 3")  # f文字列にて「0 <= num < 3」を表示
    num += 1  # numに1足しあわせる

while num >= 2 or num % 2 == 0:  # numが2以上または偶数(÷2の余りが0)の場合、処理を実行
    print(f"or: {num} >= 2")   # f文字列にて「num >= 2」を表示
    print(f"or: {num} % 2 == 0")   # f文字列にて「num % 2 == 0」を表示
    num -= 1  # numから1を引く

= 実行結果 =

and: 0 <= 0 < 3
and: 0 <= 1 < 3
and: 0 <= 2 < 3

or: 3 >= 2
or: 3 % 2 == 0
or: 2 >= 2
or: 2 % 2 == 0

【not演算子】条件を満たすまで繰り返し実行

「~でない」の形で条件を指定したい場合は、not演算子を使用します。

while文は実行条件が真(=True)の間処理を繰り返すため、notを使うと「偽(=False)の間処理を実行する」形になります。

num = 0  # numという変数に、数値(0)を保持

while not num >= 3:  # numが3以上でない間、以下の処理を繰り返し実行
    print(num)  # numの中身を表示
    num += 1  # numに1足しあわせる

= 実行結果 =

0
1
2

【else節】While文が終了した後の処理を指定

else節では、while文での繰り返しが終わった後に実行する処理内容を指定できます。

そのため、elseを使う場合は、必ずそれより前にwhile文を記述しておく必要があります。

またelse節の特徴として、後述するbreak文にてwhileを抜け出した場合、elseの処理は実行されずスキップとなります。

num = 0  # numという変数に、数値(0)を保持

while num < 3:  # numが3未満の間、以下の処理を繰り返し実行
    print(num)  # numの中身を表示
    num += 1  # numに1足しあわせる
else:  # while文が終了したら、以下の処理を実行
    print("end: ", num)  # 文字列とnumの中身を表示

= 実行結果 =

0
1
2
end:  3

無限ループ(while True)の抜け方

while文を実行するにあたり、「繰り返し中でも、特定の条件下で処理を終了・スキップしたい」場面も出てくるかと思います。

また無限ループ(while True)時には、処理を止めるためにも終了条件を別に設定しておくことが必要です。

Pythonでは、繰り返し処理を抜ける方法としてbreakcontinueが用意されています。

【break】while文を抜け出す

break文は、繰り返し処理を抜け出す際に使用する記述法です。

breakが実行された時点で、その後のループ処理は一切行わずwhile文を終了します。

num = 0  # numという変数に、数値(0)を保持

while num < 5:  # numが5未満の場合、以下の処理を繰り返し実行
    if num == 2:  # numの値が2の場合、以下の処理を実行
        num += 1  # numに1足しあわせる
        break  # while文を抜け出す
    print(num)  # numの中身を表示
    num += 1  # numに1足しあわせる

= 実行結果 =

0
1

if文については、こちらの記事にて詳しく説明してます

【continue】対象の処理をスキップする

continue文は、繰り返し処理をスキップする際に使用する記述法です。

continueが実行されると、それ以降の処理は行わずwhile文の最初の処理に戻ります。

num = 0  # numという変数に、数値(0)を保持

while num < 5:  # numが5未満の場合、以下の処理を繰り返し実行
    if num == 2:  # numの値が2の場合、以下の処理を実行
        num += 1  # numに1足しあわせる
        continue  # 処理をスキップする
    print(num)  # numの中身を表示
    num += 1  # numに1足しあわせる

= 実行結果 =

0
1
3
4

if文については、上で紹介した『break』にて詳しく説明しています

まとめ

この記事では、while文で無限ループを行う方法や、途中でwhile文を抜ける方法について解説しました。

whileは、「指定の条件下であれば何度も同じ処理ができる」という役割から、特に使用頻度の多い記述法の一つです。

Pythonを扱う上では切っても切れない要素ですので、しっかりと基礎を押さえておくようにしましょう。

シェアはこちらから
目次