超初心者のための「continue」 &「break」そして「pass」

 ループ処理を止めたり、途中で抜けたりをしたい時は良く出てくる。
ここではその手段である「continue」 と「break」の説明をしたいと思う。
なお、「pass」はループ処理とは独立したものであるが、初心者の頃「continue」とかと同列に扱えると思って混乱していた時があったので説明に加えてみる。


■以下では、次の基本処理をベースに説明する。

for x in range(5):
    print(x)

説明するまでもないが、range(5) で0~4までの数字を発生させそれをfor文で取り出してprint()で出力している。結果は以下のようになる。

それでは、本題の「continue」などを使うとどのように処理が変わるのかみていこう。
なお、ループ処理下で「continue」も「break」を使うには、「if」などで条件を満たした場合に発動させるのが定番の書き方である。

次のループ処理へスキップする「continue」

 多くのサイトでは「抜け出す」と書かれていることが多いが、私は初心者の頃に「抜け出すとは終わりってことかな」、と勘違いしたのであまり好きな表現ではない。
 個人的には「次のループ処理へスキップする」方がしっくりくる。それでは早速「contineu」の使用例として、xが3になったらcontineを使う処理に変えてみる。

for x in range(5):
    print('loop' + str(x))
    if x ==3:
        continue
    print(x)

[処理の流れ]

  1. まずx=0からループがスタートする。最初にprint('loop' + str(x+1)) で「loop0」 が出力される。
  2. 続いてif文にかけられるが、xは3ではないのでcontinueは実行されないので何も処理されない。
  3. print(x) で「0」が出力されてこのループは終了する。
  4. 続いてx=1,x=2についてはx=0と同様の処理がなされる。
  5. X=3の場合においては、まずloop3が出力されるとこまでは変わらない。
  6. 一方if文の条件を満たすのでここでcontinueが実行される。
  7. つまりこのループはここで終了し次のループへされるためprint(x)は実行されない。
  8. x=4,X=5 については再びx=0と同じ動きをする。

よって、結果の出力は以下のようになる。

見ての通り、x=3の時だけpritn(x)が実行されていない。
また、ループが止まるのはあくまでcontinueが実行された時である。そのためcontinue前のprint('loop' + str(x))は実行され「loop3」は出力されているのが分かるだろう。

ループ処理を終了させる「break」

 「continue」と同様にXが3となった時に「break」処理をするように書いてみる。

for x in range(5):
    print('loop' + str(x))
    if x ==3:
        break
    print(x)

[処理の流れ]

  1. x=2 まではcontinueで説明した通り行われる。
  2. x=3となった時、if文を満たすためbreakが実行される。
  3. breakは文字通りループ処理をそこで止める。したがってX=4、5は実行されることがない。

よって、結果の出力は以下のようになる。

continueの時と同じく、ループが止まるときはbreakが実行された時、同じループ内にあってもbreakより前の処理は当然実行される点は認識しておいた方が良いだろう。

何もしないを実行する「pass」

 passは何もしないという内容とpass(パス)という響きで、「continue」みたいな使い方が出来ると勘違いしていた時があった。もちろんただの勉強不足であるが、ネットでつまみ食い的に勉強している人は同じように陥ってしまうことがあるかもしれない。

 「continue」と同様にXが3となった時に「break」処理をするように書いてみる。

for x in range(5):
    print('loop' + str(x))
    if x ==3:
        pass
    print(x)

処理の説明は上の二つの説明で理解していただいたと思うので省くが、これを実行すると以下のようになる。


見ての通りすべてがそのまま実行されている。それは、xがif文の条件を満たしても実行するのはpass(何もしない)するからである。つまりif文を入れなくても同じ結果となる。

もし、「continue」と同じような動きをさせたかったら以下のようにすれば良い。

for x in range(5):
    print('loop' + str(x))
    if x ==3:
        pass
   else:    
        print(x)

xが3の時だけ何もしないpassを実行して、それ以外はprint(x)で出力される。すると「continue」 と同じくような結果が出力される。

今回に限って言えば、素直に「continue」を使った方がシンプルで良いと思います

まとめ

 ループ処理の一つ「for文」での「continue」 や「break」の機能を説明した。これが理解できていれば「while文」の方でも十分に使いなせると思います。コードが複雑になっても基本的な動きが押さえられていれば使いこなせると思います。