プログラムを書く際によく使う処理のひとつにループがある。
大抵は定められた回数や要素の数だけ処理するので 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
で抜けられると覚えておくといいですね。