【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では、繰り返し処理を抜ける方法としてbreak
やcontinue
が用意されています。
【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
まとめ
この記事では、while文で無限ループを行う方法や、途中でwhile文を抜ける方法について解説しました。
while
は、「指定の条件下であれば何度も同じ処理ができる」という役割から、特に使用頻度の多い記述法の一つです。
Pythonを扱う上では切っても切れない要素ですので、しっかりと基礎を押さえておくようにしましょう。