Pythonのwhileとは?正しい使い方について解説

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文を使いこなし、スムーズに情報を仕上げられるでしょう。

最新情報をチェックしよう!