breakとcontinue文について学んでいきましょう。
breakは、ブロックを抜ける時に使う
まずはbreakです。break文はブロックを一気に抜ける時に使います。
メモリのイメージで見てみましょう。
while文がはじまり、ブロックの中のコードが実行されていきますが、3番地のbreak文が実行されると、一気にブロックを抜けて7番地のコードが実行されます。
(if文はwhileブロックに含まれていますので、実行されません。)
continueは、ブロックの途中でbreakするようなイメージ
breakよりもcontinueの方がイメージがわきづらいと思います。
これもメモリのイメージを使いながら理解していきましょう。
while文の中のコードが順番に実行されていきますが、3番地のbreakにくると、後に命令が残っていてもまた1番地に戻ります。
ですので、continue文はある条件の時に処理を飛ばしたい時に使われます。
実際のコードを見て、イメージをつかみましょう。
continue文の場合、間違っているコードを見るとイメージがわきやすいので、まずは間違ったコードを書いてみます。
コード1 number = 0
2 while number < 5:
3 if number = 3:
4 continue
5 print(number)
6 number += 1
アウトプット0
1
2
このコードを実行したところ、0と1と2しか表示されません。while文の条件は、numberが5になるまでとしていたのですが、何がまちがっていたのでしょうか。
このコードで間違えている部分は、変数numberに1を足している所です。
順番にコードを見て確認していきましょう。
コードの解説(1) 1行目で、変数numberに0を代入しています。
(2) 2行目からwhile文です。変数numberが5未満であればコードを実行するという条件にしています。1行目でnumberに0を代入しましたので、while以下のコードが実行されます。
(3) 3行目はif文です。numberは0ですので、条件には合致せず、if文は実行されません。
(4) if文が実行されませんので、次は5行目のprint関数が実行されます。結果、0が出力されます。
(5) 6行目で、numberが1増えますので、numberには1が入ります。
(6) 再び1行目に戻ってwhile文が実行されます。ここからは、numberが3になったとして、次のコードを見ていきましょう。
(7) 3行目のif文において、numberが3ですので4行目のコードが実行されます。
(8) 4行目はcontinue文です。これは、while文に戻るという意味ですので、5行目以降のコードは実行されず、再び1行目に戻ります。
この時、numberは3のままです。
(9) while 文で条件判定が行われますが、numberは3ですので次のif文が実行されます。
(10) 以下、if文→continue文→while文が繰り返し実行され続けます。
つまり、while文の条件判定をするコードは、continue文の前に書かないといけないのです。
正しいコードと、その出力結果をみてみましょう。
コード1 number = 0
2 while number < 5:
3 number += 1
4 if number = 3:
5 continue
6 print(number)
アウトプット1
2
4
5
まちがっていたコードとの違いは、number += 1が書かれている場所です。
この文をwhileの次の行に書くことによって、continue文が実行された場合でも(while文に戻っても)numberが足されるので、正しい結果をえることができました。
break・continue文のまとめ
(1) break文はブロックをそのまま抜ける
(2) continue文はwhileに戻す
(3) continue文を使う時は、whileの条件分岐をcontinueの前に書かなければいけない
break・continue文を学んだ後は
基礎的な学習はこれで完了です。お疲れ様でした。次は関数について学んでいきましょう。