【初心者向け】Pythonでwhile文を使う方法

プログラミング
Pythonを使ってループ処理をする際に使える文法のひとつであるwhile文。この記事では、while文の概要、基本書式、break文やcontinue文などの使い方について、コードの実例とともに初心者にもわかりやすい表現で解説しています。
【初心者向け】Pythonでwhile文を使う方法

Pythonを使ってループ処理をする際に使える文法のひとつであるwhile文。 Pythonでプログラミングをおこなう際にはループを覚えることは必須なので、これを機にwhile文の使い方を覚えてしまいましょう。 この記事ではwhile文の使いどころから実際の書き方までを、プログラミング初心者にもわかりやすいよう、コードの実例を載せて解説していきたいと思います。

Pythonのwhile文とは

while文は繰り返しの処理を記述する際に使います。

for文とwhile文の違い

Pythonの繰り返し処理にはfor文というものもあります。 ではwhile文とfor文は何が違うのでしょうか? 両者の違いは、ループの終了条件です。 for文:指定された回数繰り返すと終了する while文:条件を満たさなくなったら終了する というように、while文は条件を満たすかどうかをループの基準にしており、条件がtrueの間は処理を繰り返し続けます。

Pythonのwhile文の基本書式

それではPythonでのwhile文の書き方を解説していきます。

while文の基本書式は以下の通りです。

while 条件:
    繰り返しおこなう処理

例えば、5回処理を繰り返したい場合は以下のように記述します。

i=0
while(i < 5):
    print("while")    
    i+=1

このコードを実行すると「while」と5回表示されます。
条件は変数iが5より小さい場合を真として、ループの中で変数iに1を加算(インクリメント)しています。 ループ内で変数iをインクリメントをすることを忘れると無限ループを引き起こしてしまうことに気をつけてください。

while文は無限ループに注意しよう

while文の無限ループとは、何度ループを繰り返しても繰り返し条件を満たし続けることによって起こります。 上記のコードを例に解説をすると、以下のように書くと無限ループとなります。

i=0
while(i < 5):
    print("while")

このコードは、ループの最後に変数iをインクリメントする処理が抜けています。すると、何度ループしても変数iの値が0のままであるため、永遠にループが終わらず無限ループとなります。 このように、while文を書くときにはどこかでループを抜けられるように記述するよう気を付けてください。

Pythonのwhile文のさまざまな書き方

ここからはwhile文を使って、

  • ループを中断する方法
  • 次のループに処理をスキップする方法
  • do while文のような処理を記述する方法
  • else文でループ終了時の処理を記述する方法

を紹介していきます。

break文でwhile文のループを中断する

while文を使っていると、ループの途中でループから抜け出したいという場面がでてきます。 そんなときに使うのがbreak文です。 break文は、「配列の要素を調べて特定の条件に合うものがあればループを終了する」といった処理を実装する際などに役に立ちます。

break文は以下のように書きます。

while 条件:
    if 条件:
        break

例として、様々な数値を調べ50より大きいものを見つけたらループを抜ける処理を書いてみます。

list=[2,34,52,23,49]

i=0

while(i < len(list)):
    if(list[i] > 50):
        print("50より大きい数字がありました。")
        break
    i+=1

continue文で処理をスキップする方法

while文でのループ中に、特定の条件では処理をスキップしたい場合があるときにはcontinue文が有用です。 continue文を使うことで、ループの途中で処理をスキップし、すぐに次のループが始まります。

continue文は以下のように記述します。

while 条件:
    if 条件:
        continue
    繰り返しおこなう処理

例として様々な数値を調べ、50以下のものを表示するという処理を書いてみます。

list=[2,34,52,23,49]
i=0

while(i < len(list)):
    if(list[i] > 50):
        i+=1
        continue
    print(list[i])
    i+=1

このコードの実行結果は以下の通りです。

2
34
23
49

このように、50より大きい数字(52)のループでは、continue文が実行されその後の出力処理などがスキップされて次のループが始まります。

do while文のように使う方法

do while文の特徴は、ループ内の処理が必ず1度はおこなわれるというものですが、Pythonには存在しません。 しかし、while文を使って同じ処理を記述することが可能です。

以下のように記述します。

while true:
       繰り返しおこなう処理(1度目は必ず実行される)
       if 条件:
break

このようにwhile文の条件式を「true」とすることで意図的に無限ループを作り出し、必ず1度はループ内の処理がおこなわれるようになっています。 そして、break文を使ってループを抜け出す処理を書くことでdo while文ような動作を実装することができます。

else文でwhile文終了時の処理を記述する

while文が終了した際に実行したい処理がある場合、else文を使って書くことができます。 while文のループ終了後、else文を1度実行し、while文が終了します。

while文におけるelse文は以下のように記述します。

while 条件:
繰り返しおこなう処理
else:
条件が偽のときに実行される処理

else文を書かずとも、while文の後に処理を書けばelse文と同じ動作をしますが、あえてelse文で書くことでその処理がwhile文と関係していることがわかりやすくなります。 つまり、第三者にもわかりやすいコードを書くためelse文を使うのです。 また、break文が実行されてwhile文が終了した場合にはelse文は実行されないので、while文がどのように終了したのかを判断するためにelse文が使われることもあります。

まとめ

ここまでwhile文の概要から使い方までを紹介してきました。 while文のポイントとして、繰り返し処理を書くときに使う for文と違って条件を満たす限りループが続く 無限ループに注意 break文を使ってループから抜けられる ということを覚えておきましょう。 この記事がPythonでプログラミングをする際に必要となるwhile文についての基礎を覚えるきっかけになれれば幸いです。

この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


おすすめのコラム