
Pythonの中でもプログラミング定番の繰り返し処理があります。
シンプルな繰り返し処理としては、for文もありますが、より条件を指定して繰り返し処理を行う場合は、whileが適しています。
今回は、Pythonのwhileによる繰り返し処理について、解説していきます。
▼目次
while文とは
for文同様にPython以外のプログラミングでも繰り返し処理で利用されることが多いのが、while文です。
for文についてはこちらの記事で解説しております。
for文との違いについて
それではwhileの記述方法などの解説に入る前に、for文との違いについて、解説しておきます。
実際の多くのwebサイトなどでもその違いについて、解説しているところもありますが、簡単な使い分けはfor文は繰り返し回数が既に決まっている場合に使用します。
それに対して、while文は事前に繰り返し回数が決まっていない場合に使用します。
while文の基本的な使い方について
while文の基本的な記述方法は、下記になります。
while 条件式: 条件式がTrueの間繰り返す処理
指定条件がTrueの間繰り返される
上述のwhileの記述方法について、注意すべきポイントは指定条件がTrueの間繰り返されるところです。
ずっとTrueになる条件式や最初からFalse(意図せずに)になっている条件式の場合は、正常に動作しません。
単純な繰り返しであれば、for文の方が使いやすくおすすめです。
しかし条件式を指定するから対応できる仕様も少なくない為、while文の特徴をしっかりと把握しておかなければいけません。
loop回数を指定する記述
条件式がTrueの間繰り返し処理を実行することは、上記で解説しましたが、while文でloop回数を指定する場合は、下記の様に記述します。
#繰り返し条件式で使用する変数を準備 count_tmp = 1 #準備した変数を条件に5回処理を実行する while count_tmp <= 5: print("繰り返し処理:" + str(count_tmp) + "回目") count_tmp += 1 #実行結果 繰り返し処理1回目 繰り返し処理2回目 繰り返し処理3回目 繰り返し処理4回目 繰り返し処理5回目
count_tmpに1を代入し、繰り返し処理を実行する度に1を足していきます。
使用例では5回処理を実行したい為、条件式がTrueの間実行される為、count_tmpが5より大きくなるまで実行されます。
6になった場合、6 <= 5ではないため、処理が終了します。
while文では条件式で繰り返し処理の回数が決まるように調整しなければいけません。
while処理を継続する方法
while文の処理の中で繰り返し処理を一部実行せずに継続して繰り返し処理を行う方法があります。
例えば1から10までの文字を出力する時に、5だけ出力せずに繰り返し処理を行いたい場合などです。
continueの記述方法
上述の様な処理を行う場合は、while文ではcontinueを使用します。
具体的な処理の流れは、continue以降の処理を飛ばしてwhile文の先頭に戻って処理を継続することになります。
基本的な記述方法は、下記になります。
while 条件式: if 条件式: continue 繰り返し実行する処理
上記のようにif文とセットで使うことが多く、if文の条件式に該当した場合にcontinueで次の繰り返し処理へ移行される形になります。
continueの使用例
それでは実際にcontinueの具体的な使用例について、ご紹介します。
#繰り返し条件式で使用する変数を準備 count_tmp = 0 #準備した変数を条件に5回処理を実行する while count_tmp < 5: count_tmp = count_tmp + 1 #count_tmpが3の時のみ処理を変更 if count_tmp == 3: #cont_tmpが3の時のみcontinu処理で以降の処理を実行しない continue print("繰り返し処理:" + str(count_tmp) + "回目") #実行結果 繰り返し処理:1回目 繰り返し処理:2回目 繰り返し処理:4回目 繰り返し処理:5回目
実行結果から3回目の処理だけprint出力が実行されていないことがわかります。
これはif文の条件分岐でcount_tmpが3の時のみcontinue処理でwhile文の先頭に戻っているからです。
ここで注意する点は、「loop回数を指定する記述」でご紹介した使用例と同じ5回処理を繰り返すにも関わらずwhileの条件式に違いがあります。
(今回は初期値に0を代入していますね)
これはcontinueの為に変数に1を足すタイミングが変更になっている為、条件式を調整しています。
今回の場合、if文の部分はcontinueされないようにしなければ、いつまでも+1されずに、3回目から次にいけません。
while文を使う場合は、繰り返し処理に合わせて条件式の変更が必要になることがあるので、注意しなければいけません。
while処理を抜ける方法
while文にはcontinue以外にも繰り返し処理を制御するbreakがあります。
continueが繰り返し処理の先頭に戻って継続するのに対して、breakは強制的に繰り返し処理の中から抜け出す処理になります。
例えば繰り返し処理の中で特定の条件を満たした場合などに、繰り返し処理をこれ以上行いたくない、または、行う必要がない場合などによく使用されます。
例えば繰り返しの中で想定していない数値が出た場合にbreakでエラー処理をする為に使用されることもあります。
breakの記述方法
while文でbreakを使う場合の基本的な記述方法は、下記になります。
while 条件式: if 条件式: break 繰り返し実行する処理
上記のように基本的な記述方法は、continueの時とよく似ています。
実際に使う場合は、if文の前になぜ繰り返し処理を抜けたかなどをprintで出力することも少なくありません。
breakの使用例
breakを使った具体的な使用例は、下記になります。
#繰り返し条件式で使用する変数を準備 count_tmp = 0 #準備した変数を条件に想定は10回処理を実行する while count_tmp < 10: count_tmp = count_tmp + 1 #count_tmpが5の場合処理を中断する条件式を設定 if count_tmp == 5: #cont_tmpが5の時のにbreakでwhile文から抜け出す break print("繰り返し処理:" + str(count_tmp) + "回目") #実行結果 繰り返し処理:1回目 繰り返し処理:2回目 繰り返し処理:3回目 繰り返し処理:4回目
実行結果からcount_tmpが5になって以降は、繰り返しのprint出力が実行されずに、while文の繰り返し処理が終了していることがわかります。
混同しやすいですが、continueとbreakの違いや、使い分けを確実に把握しておかなければいけません。
while処理後をelseで1度だけ処理を実行
whileの繰り返し処理の最後にelse節で1度だけ処理を実行することができます。
elseの記述方法
while文でelse節で最後に1度だけ処理を実行する記述方法は、下記になります。
while 条件式: 繰り返し実行する処理 else: 条件式がfalseになった時1度だけ実行する処理
while文の繰り返しに入る前から条件式がfalseの場合でも、1度だけ処理が実行されます。
elseの使用例
それでは具体的なwhile文でelse節の使用例についてご紹介します。
#繰り返し条件式で使用する変数を準備 count_tmp = 1 #準備した変数を条件に5回処理を実行する while count_tmp <= 5: print("繰り返し処理:" + str(count_tmp) + "回目") count_tmp += 1 else: print("繰り返し処理終了") #実行結果 繰り返し処理:1回目 繰り返し処理:2回目 繰り返し処理:3回目 繰り返し処理:4回目 繰り返し処理:5回目 繰り返し処理終了
else節の前は「loop回数を指定する記述」でご紹介した使用例と同じになります。
実行結果から最後にelse節の処理が行われていることがわかります。
注意するポイントはbreakと組み合わせて使う場合、breakで繰り返し処理が終了するとelse節は実行されません。
while処理は無限ループに注意
ここまでwhile文について解説してきましたが、while文を使う場合に、初心者がもっとも注意しなければいけないのが無限ループです。
無限ループは、while文の条件式がFalseにならずにループが終わらないことです。
無限ループの例
無限ループになってしまう場合の例は、以下になります。
#繰り返し条件式で使用する変数を準備 count_tmp = 1 #準備した変数を条件に5回処理を実行する while count_tmp <= 5: print("繰り返し処理:" + str(count_tmp) + "回目") #条件式の判定になる変数に1を代入してしまい無限ループになる。 count_tmp = 1
極端な例ですが、コメント部分でも記載している通り条件式の判定に使用する変数に1を代入してしまっている為、条件判定がTrueになり続けてしまい無限ループになってしまいます。
無限ループを回避する対策
無限ループになってしまう可能性がある場合は、上述で解説したbreakを適度にプログラミングコードの中に入れたり、ユーザーが操作できる場合は「Ctrl+C」で無限ループを停止することが可能です。
またVSCodeなどのエディタを使用することで、コーディング時点でエラーとして警告表示してくれます。
まとめ
今回はPythonの繰り返し処理の1つwhileについて解説をしてきましたが、いかがでしたか。
繰り返し処理としてはPythonにはforがありますが、同じ繰り返し処理でも使いどころが違います。
whileの繰り返し処理の記述方法や無限ループに注意して、より効率的なプログラミングが行えるように今回解説した内容を是非習得して頂ければ幸いです。
DMM WEWBCAMPについて
DMM WEBCAMPは3ヶ月間で未経験から即戦力エンジニアを育成する転職保障付きのプログラミングスクールです。1ヶ月でプログラミング・Webデザインを学ぶ通い放題の「ビジネス教養コース」も展開しています。
DMM WEBCAMPを運営する株式会社インフラトップ では、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。
キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?
プログラミング学習から転職成功まで導く、当社人気のDMM WEBCAMP(旧WEBCAMP PRO)。
2月受入枠は満員となっております。3月枠に向け、お早めの申込みをオススメします。
・プログラミング未経験でもエンジニア転職を絶対成功させたい
・スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!
▼未経験から1ヶ月でWEBデザイン・プログラミングを学びたい方はこちら!