Pythonのwhile文のcontinueを使ったループのスキップ条件の作り方

このページでは、while文のcontinueの基本と注意点について、図解を多く入れながら解説していきます。ぜひ参考にして頂ければと思います。

while 文の基本
while文の基本については「Pythonのwhile文による繰り返し処理(whileループ)の基本」で解説しています。先に目を通しておきましょう。
目次

1. while文のcontinueとは

while文のcontinueは、「ある条件を満たす間は繰り返し処理をするが、その中でスキップ条件を満たした場合は以降の処理をスキップして次のループに移る」というコードを書くときに使います。

以下が基本的な書き方です。

In [ ]:
while 条件式:
    処理文任意
    if 条件式:  #  whileブロックの中にif条件式を書く
        処理文任意
        continue  #  ifブロックの中にcontinueを書く
        処理文任意
    処理文任意

スキップ条件はif文で書いて、その条件を満たした時に以降の処理を全てスキップして次のループに移ります。ちなみに、if文については「Pythonのif文を使った条件分岐の基本と応用」でご確認ください。

条件分岐の流れは下図のようになります。

例えば、以下のコードをご覧ください。

In [1]:
num = 1

while num <= 5:
    if num == 3:  #  numが3の時にスキップ
        num += 1
        continue
    print(num)
    num += 1
1
2
4
5

whileループで数値を1から5まで出力するコードですが、この中でif文で「num == 3」の時にcontinueするように書いています。ここで以降の処理を全てスキップして次のループに移ります。

2. while文のcontinueの注意点

for文のcontinue」ではこのようなことはないのですが、while文でcontinueを書く場合は注意しないと意図せず無限ループになってしまうことがあります。

例えば、先ほどのコードの条件分岐は下図のようになっています。

これが、もし下図のようにcontinueの前に「num += 1」がなければどうでしょうか。その場合は次のように、numの値がずっと3のままになるので、意図せず無限ループ(赤矢印の経路)になってしまいます。

以下が、意図せず無限ループになってしまっている実際のコードです。このままでは、2を出力した以降プログラムは進まなくなってしまいます。

In [2]:
num = 1

while num <= 5:
    if num == 3:  #  numが3の時にスキップ
        continue
    print(num)
    num += 1
1
2

こうしたミスは起こりがちなので注意しましょう。それでももし、意図せず無限ループになってしまった場合は、「ctrl + c」で KeyboardInterruptという強制終了をすることができます。

---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<ipython-input-5-231a52ecd1f7> in <module>
      1 num = 1
      2 
----> 3 while num <= 5:
      4     if num == 3:  #  numが3の時にスキップ
      5         continue

KeyboardInterrupt: 

3. まとめ

このようにwhile文のcontinueは、「それ以降の処理を全てスキップして次のwhileループに戻る」という処理を行うコードです。プログラムが、continueに差し掛かった時点で、次のwhileループが最初から始まります。

そのために意図せず無限ループになって、プログラムの進行が止まってしまう場合があります。whileループでcontinueを使う場合は、この点に注意しましょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる