Phython

【Python】while文とは?
while文の使い方とcontinue・breakの使い方まで一気に紹介!

今回は、pythonで用いられる文法の一つであるwhile文についてその使い方をご紹介していこうと思います。

while文はif文と並んでよく使われる文法となっており、さまざまなプログラミング言語で見る機会があります。
while文とよく一緒に用いられる文法もセットでご紹介しているのでぜひ最後まで見ていってください。

ちなみに、本ブログでは初心者の方でも理解できるように丁寧に説明しているので、全くの初心者という方も安心してください。

また、pythonをまだインストールしていないといった方は以下の記事を参考にしてインストールしてみましょう。

この記事でわかること

  • while文の使い方
  • continueの使い方
  • breakの使い方
  • while elseの使い方

 while文について

まず、while文とはいったいどのようなものなのかについて説明していこうと思います。
また、while文とよく似た文法であるif文に関する記事を下に貼っておくので、「if文って何?」といった方は以下の記事から先に見ることをおすすめします。

while文とは?

while文とは、「もし〇〇だったら処理Aを行うよ。(処理A実行後)もし○○だったら処理Aを行うよ。(処理A実行後)...」みたいな感じで、条件を満たしている限りある処理を永遠に続けるといった操作を行いたいときに使用される文法です。

では、実際にコードを用いてどのように使われるのかを確認していきましょう。

while文の基本的な使い方

<input>

a = 1

while a < 5:
    print(a)
    # a = a + 1 と同義
    a += 1

<output>

1
2
3
4

上記のコードでは、『a < 5』が真の間while文の中の処理を実行しています。

aを1ずつ増やしていって5になった時点でwhile文の中に入れなくなって処理終了といった感じですね。

【注意】インデントを意識しよう

a = 1

while a < 5:
    print(a)
a += 1

if文と同様に、while文を扱う際にもインデント(文頭の空白)を意識する必要があります。

例えば、今回記述した上記コードですが、出力しようとすると恐らくとんでもないことになります。
予想できますかね?

上記コードでは『print(a)』と『a += 1』のインデントが揃っていないため、『a += 1』がwhile文の外で記述されていることになります。
こうすることによって何が起きるかと言いますと、while文に入ってもaが一生『1』のままなので無限ループに陥ってしまうんですね。

インデントを意識していないとこのようなエラーが起きてしまうので注意が必要です。
必ずwhile文の中身となる部分のコードは開始位置を合わせるようにしましょう。

 while文で用いられる様々な文法

ここまでは、基本的なwhile文の使い方を確認してきたのですが、while文とよく一緒に用いられる文法として以下の三つのものがあります。

  • break:while文を抜ける
  • continue:while文を続ける
  • else:条件を満たさない場合の処理

以下で一つずつ順番に確認していきましょう。

break:while文を抜ける

<input>

a = 1
b = 1

while a == 1:
    if b > 3:
        break
    print(b)
    b += 1

<output>

1
2
3

上記のコード、aの値が途中で全くいじられていないにも関わらず、while文の条件式が『a == 1』となってしまっているので、一見先ほどのインデントの例と同様無限ループに入ってしまい、処理が正しく終えられなさそうです。

しかし、breakがwhile文の中にあると話は別です。

breakは実行されると、while文の中から強制的に抜けるといった役割を持っているので、while文の条件を満たしているかどうかなどお構いなしにwhile文を終了させることが出来ます。

上記コードの例では、『b>3』を満たしていればbreakが実行されるので、b>3となった時点でwhile文を抜けることになります。

b = 1

# 無限ループ
while True:
    if b > 3:
        break
    print(b)
    b += 1

ちなみに、わざわざ変数aというものを使用しなくても、上記のように無限ループを作ることは可能です。

continue:while文を続ける

<input>

a = 1

while a < 5:
    if a == 2:
        a += 1
        continue
    print(a)
    a += 1

<output>

1
3
4

continueは、その下の処理は行わずにwhile文の先頭に戻って処理を継続するような文法になっています。
言葉のみだとわかりにくいので、上記コードを見ながら説明していこうと思います。

上記コードの流れを軽く説明すると、

a=1の時は、if文の中身は通らずにprint(a)をしてaの値を2に変更。
a=2の時に、if文の中に入ってaの値を3に変更した後、conntinueによってwhile文の先頭に戻る。
a=3の時に、if文の中身は通らずにprint(a)をしてaの値を4に変更。
.....

といった感じですね。

なので、出力結果の欄には『2』のみ飛ばされて出力されていることになっています。

else:条件を満たさない場合の処理

<input>

a = 1

while a < 5:
    print(a)
    a += 1
else:
    print("finish!")

<output>

1
2
3
4
finish!

elseには、while文の条件を満たさなくなってwhile文を抜ける際に処理する内容を記述します。
while文の中身の処理をすべて行った後最後に出力されるといった感じですね。

基本的にはwhile文終了時に必ずelseの中身が実行されるのですが、以下のような例外も存在します。

<input>

a = 1

while True:
    if a == 2:
        break
    print(a)
    a += 1
else:
    print("finish!")

<output>

1

このように、breakによってwhile文を抜けた時のみelseの中身が実行されないので注意しましょう。

 まとめ

今回は、while文についてその使い方やよく一緒に用いられる文法をいくつか紹介してきたのですがいかがだったでしょうか。

while文を用いると繰り返し処理が非常に簡単に行えるので魅力的ですよね。

本記事を通して皆さんの理解が少しでも深まれば幸いです。

-Phython
-,