

プログラムを書く際によく使う処理のひとつにループがある。
大抵は定められた回数や要素の数だけ処理するので for を使うが、特殊な条件を満たすまでループさせたい場合には、条件を満たすまでは無限ループをする必要がある。
ではPythonで無限ループはどう書けば良いのか。
そこで今回はPythonでwhile無限ループの書き方について紹介する。
この記事を書いている人

記事を読むメリット
Pythonでwhile無限ループの書き方がわかり、特殊なループも書けるようになる。
Pythonでwhile無限ループの書き方

Pythonで無限ループを書くには while を使う。
ただしそのまま書くと本当に無限にループするので終わらない。
整数の二乗の値を無限ループで表示させてみると以下のようになる。
SAMPLE
i=1
while True:
i2 = i*i
print("{}^2 = {}".format(i,i2))
i+=1
# 1^2 = 1
# 2^2 = 4
# 3^2 = 9
# ...
# 34946^2 = 1221222916
# ---------------------------------------------------------------------------
# KeyboardInterrupt Traceback (most recent call last)
# <ipython-input-10-faae299430c3> in <module>()
# 2 while True:
# 3 i2 = i*i
# ----> 4 print("{}^2 = {}".format(i,i2))
# 5 i+=1
# 1 frames
# /usr/local/lib/python3.7/dist-packages/ipykernel/iostream.py in _is_master_process(self)
# 306
# 307 def _is_master_process(self):
# --> 308 return os.getpid() == self._master_pid
# 309
# 310 def set_parent(self, parent):
# KeyboardInterrupt:
これではプログラムを異常終了で終わらせることしかできない。
whileループに終了条件を記述する

ではこの無限ループに終了条件を追加するにはどうしたら良いのか。
ひとつは while の後ろに条件を追加する方法がある。
先程の2乗値を表示するコードに、2乗値が100未満の間のみ実行するように条件を追加すると、以下のようになる。
SAMPLE
i=1
while (i*i)<100:
i2 = i*i
print("{}^2 = {}".format(i,i2))
i+=1
# 1^2 = 1
# 2^2 = 4
# 3^2 = 9
# 4^2 = 16
# 5^2 = 25
# 6^2 = 36
# 7^2 = 49
# 8^2 = 64
# 9^2 = 81
もうひとつの方法として break で終了させる方法がある。
こちらはループの中で条件判定し、終了条件を満たしたら break を実行する。
SAMPLE
i=1
while True:
i2 = i*i
if (i2)>=100:
break
print("{}^2 = {}".format(i,i2))
i+=1
# 1^2 = 1
# 2^2 = 4
# 3^2 = 9
# 4^2 = 16
# 5^2 = 25
# 6^2 = 36
# 7^2 = 49
# 8^2 = 64
# 9^2 = 81
まとめ

今回はPythonでwhile無限ループの書き方について解説した。
無限ループするには while を使い、特定の条件で終了させるには以下の2つの方法がある。
ココがポイント
- whileの後ろに実行する条件を書く
- ループの中で終了条件をifで判定し、breakで抜ける

while True: で無限ループになり、breakで抜けられると覚えておくといいですね。


