Pythonでプログラミングをしていて、whileについて不明点があるという人もいるでしょう。whileは繰り返し処理に使われ、初心者であっても使い方を学び正しい活用方法がわかれば、情報処理をスムーズに進められるでしょう。今回は、whileを知りたい方へその定義と、正しい使い方をまとめました。
Pythonのwhileとは?
whileはPythonでよく使われるテクニックのひとつで、繰り返し処理に用います。for文とは概念が似ているので、違いを把握しておきましょう。whileの定義を、for文との違いを踏まえながら解説します。
繰り返し処理に用いる
whileはプログラミングテクニックの一種で、こちらを使った構文は「while文」と表現されます。Pythonでも指定した条件式が真なら、反復処理が可能です。Pythonにおけるwhileのサンプルコードを見てみましょう。
i = 0while i < 10: print(i) i += 1
以上はwhileの基本形です。whileのある行は、必ず「:」で閉じてください。「変数i」が10未満なら、その時点における変数の値を出力します。1をプラスして処理の先頭へ返れば、再処理が可能です。上記サンプルコードの場合、10回目の処理で変数iが10になれば、処理が終わります。
前述した通り、while文は条件式が正しいときに処理を反復できるしくみです。一方、条件が常に真なら、永続的に処理が続くため、情報処理に影響が及ぶかもしれません。この場合は無限ループが起き、エラーにもつながります。
上記サンプルでは、i+=1の行を消すと、iが0のままになり、ループが終わらなくなるので要注意です。while文は、必ず終了条件を指定したうえで運用しましょう。
for文との違い
while文とfor文は、処理終了の条件が違います。for文は回数が指定されるしくみで、その回数分の処理を繰り返すと終わるようになっています。一方while文は、条件を満たさないときに処理終了を迎えます。つまりfor文と違い、回数指定がない限りは、無限に処理を繰り返すこともあるでしょう。
前述した通り、while文はプログラミングコードが指定条件に合う限り、何回でも処理を繰り返すしくみです。そのため操作ミスによって無限ループが起き、エラーが生じるかもしれません。以上のことから、for文より注意深く使いましょう。
Pythonのwhile文の使い方
Pythonではelse文やbreak文、continue文でのwhileの使用が想定されます。それぞれの使用方法を、サンプルコードとともに見ていきましょう。
else文での使用
elseは、while文で全処理実行を受けたときに機能します。ただしwhile文で全処理が終わらないと、elseは働きません。elseを使いたい場合は、whileの処理条件に細心の注意を払ってください。else文でwhile文を適用したときのサンプルコードは、以下のとおりです。
count = 0while count < 5: count += 1 print(count)else: print('ループ処理終了!')
count=0で初期化状態を意味します。上記サンプルコードではcountが5未満である限り、処理が続きます。最後まで処理が済んだとき、elseが実行されるしくみです。サンプルコードでは最終的に以下の文字列が現れ、ループ処理が終わります。
12345
以上でelse記述は終了です。
break文での使用
breakはif文とセットで用います。if文の条件と合えば、処理中断が可能なので、while文で起きがちな無限ループ対策も可能です。こちらのサンプルコードを確認してみましょう。
count = 0while count < 5: count += 1 if count == 3: break print(count)
上記の場合、countが3になったとき処理中断が起きるしくみです。処理中断の結果、実行結果もelseのときと違い、2までしか表示されません。以上からbreakは、過剰処理によるエラーの対策に役立つでしょう。
continue文での使用
continueは処理を中断させず、次のループへ進ませる機能です。こちらもif文とセットで用い、条件が見られればループ処理を中断しますが、次のループへの移行は止まりません。以下のサンプルコードを参考にしてください。
count = 0while count < 5: count += 1 if count == 3: continue print(count)
上記の場合、countが3の場合に処理しないだけでなく、下部のprintも実行されません。breakと違って、特定のカウントに当たれば処理が止まるのではなく、次の処理へスキップされます。実行結果は以下のとおりです。
1245
countが3になると処理がスキップされるため、実行結果でも3が省略されます。一部の情報だけ処理したくない場合は、continueを活用してください。
while文では複数条件の指定も可能
while文の使用時は、複数条件の指定も可能です。この章では、サンプルコードとともに見ていきましょう。
複数条件の指定方法
while文で複数条件を決めるなら、論理演算子の「and」や「or」を用いてください。andは全条件から真なら、全体の結果を真にできます。orは指定条件のうちいずれかが真なら、全体の結果が真になるので、andより柔軟に活用できるでしょう。サンプルコードは以下のとおりです。
i = 0j = 20while i < 10 and j > 10: # do something i += 1 j -= 1
上記ではwhileの行にandを使っているためiが10未満かつ、jが10より大きければ、処理ループが続きます。一方、orを用いた場合iが10未満か、jが10を超えるなら条件達成なので、ループが続きやすいしくみです。ループの可能性を考えながら、andとorを使い分けてください。
複数条件のあるwhile文のサンプルコード
while文について、複数条件のサンプルコードを見ていきましょう。
i = 0j = 20while i < 10 and j > 10: print(f"i: {i}, j: {j}") i += 1 j -= 1
ここではiの値について、10未満を条件としています。なおかつjが10より大きければ、whileによる処理が働き続けるしくみです。ただし、iとjの値が変わった結果、iが10以上かjが10以下になれば、条件を満たさなくなりループ処理は終了です。
ただし、プログラミングにおける複数条件の指定は、管理が難しいといえます。高次元のテクニックで広範囲の情報を処理できる一方、設定を間違うと、誤情報が入り込むおそれもあります。
初心者であるうちは単一条件でのwhile処理を繰り返し、一定の経験を積んだら複数条件の指定を済ませるとよいでしょう。
while文使用時の注意点
while文を使うときは、無限ループを起こさないように注意しましょう。状況に応じてループ中断やスキップを覚えれば、トラブルを防げます。while文における注意点を、以下で2つ見ていきましょう。
無限ループを起こさないように要注意
while文の使用時は、無限ループに気をつけてください。無限ループとは、コードが指定条件から外れなくなり、ユーザーの意図しない処理が無限に続く状態です。たとえば以下のコードだと、無限ループが起きます。
i = 0while i < 5: print(i)
ループの最後に、変数iをインクリメントしていないため、変数iが0のまま変わりません。そのためループが終わらなくなってしまうでしょう。ループを抜けられるように、特定のコードを記述してください。
状況に応じてループ中断やスキップなどを覚えよう
while文を使うときは、無限ループ対策が欠かせません。たとえばbreak文では、以下のコードを添えればループ中断できます。
while 条件: if 条件: break
whileだけでなく、ifの後に条件を指定しましょう。ifの条件を満たしたとき、ループ処理のbreak(中断)が起きます。また、continue文では以下のコードを設定しましょう。
while 条件: if 条件: continue 繰り返しおこなう処理
これは、ifの条件を満たすものは処理をスキップされ、ループ処理自体が続くしくみです。このようにwhile文を用いるときは、無限ループへの対策のため、特定コードの追加を忘れないようにしましょう。
Pythonのwhileのまとめ
while文はプログラミングにおける繰り返し処理なので、慣れれば情報管理をスムーズにできます。しかし、ループ処理を起こすこともあり、放置すると誤情報が入り込んだり、エラーが起きたりするでしょう。以上からbreakやcontinueなどを使い、無限ループへの対策をする必要があります。
ここまで意識することができれば、プログラミングの際にwhile文を使いこなし、スムーズに情報を仕上げられるでしょう。