こんにちは。
おぎーです。
この記事では、continueと入れ子のループについて初心者目線で優しく解説しています。
それでは早速学習を進めていきましょう。
Google Colaboratoryを開いてください。
インストールしていない方はこちらの記事を参考にインストールしましょう。
continue
continueを使用した例を早速みてみましょう。
for i in range(1, 10):
if i == 5:
continue
print(i)
せっかくですから、このコードを出力してcontinueがどのようにコード全体へ作用しているのかを考えてみましょう。
どうでしたか。
continueの役割、分かりましたか?
まず、上のコードの出力結果は以下のようになったと思います。
1
2
3
4
6
7
8
9
このコードを入力することによってしたかったことは、
1から9まで出力するけど5だけは出力させたくない、
ということです。
コードの1行目でrangeで範囲を指定したループ処理をしています。
ここでは、1から10で、終了値の10は出力されないんでしたね。
rangeに関して復習用にこの記事を載せておきます。うろ覚えの人は復習しましょう。
次の行では、iが5の場合(5と等価の場合)に、
という条件のif文を入力しています。
そして3行目で、if文の条件のときに、
continueというキーワードを入力しています。
if文の条件、すなわち、iが5のときは、
コードが実行されません。
5が出力されていないことからも分かると思います。
一方で、iが5以外のときは、
4行目のように、iが出力される反復処理が行われます。
このように、if文で指定した条件のときにcontinueを適用させると、その条件のときの処理を実行されずに、次のループ処理に移行します。
continueはforループでも活用できますが、もちろんwhileループでも実行可能です。
x = 1
while x < 10:
if x == 5:
x += 1
continue
print(x)
x += 1
こちらのコードも、出力結果だけをみればさきほどのforループを使用したコード例と同じです。
whileの復習も兼ねて、コードの内容を細かいところまで理解しておきましょう。
まず、1行目でxに1という値を代入します。
2行目で、xが10より小さい範囲を条件として指定します。
そして3行目でxが5のとき(5と等価のとき)という条件のif文を記します。
等価は、==で表現するのがルールですが、他の記号も覚えていますか?
等価は比較演算子の仲間ですが、その他の演算子も確認してみてくださいね。
4行目では、if文の条件をもとに、xを1だけインクリメントしています。
x += 1は、x = x + 1の略であることもぱっと理解できなかった方は、あらためてインクリメントとデクリメントの確認も必要だと思いますので、ぜひ復習しましょう。
5行目ではcontinueでif文の条件であるxが5のときは、continueまででコードの実行を終了し、次のループ処理へ移行します。
xが5以外のときは、そのまま次の行以降のコードが実行されます。
6行目では、xの値を出力しています。
そして7行目では、xの値を1だけインクリメントしています。
ここまでの内容のコードがwhile文で指定された条件の範囲でループ処理が行われます。
入れ子のループ
forループの中でさらにforループとか、二重でループが行われるようなコードも実行可能です。
二重ループどころか、三重、四重といくらでも重ねてループすることは可能ですが、
極力何度もループするようなコードにするのは避けた方がよいとされています。
なんせあとからそのコードで何が起こっているのかを確認するときに分かりにくいですからね。
ループの中にループを作成することを、入れ子のループといいます。
1回目のループをことを外側のループ、2回目以降のループを内側のループと言ったりします。
具体的なループのしくみについては、Pengさんが詳しく解説しているので、
ぜひ確認してみてください。
こちらの記事では、入れ子のループのことを多重ループといった表現をしていますが、しくみ的には全く同じなので、多重ループの段落を読んでみてください。
また、この記事では、多重ループからどのように脱出するのかといったテクニック的な内容も含んでいます。
まとめ
さて、ここまででループに関するコードの学習は一通り終わりました。
これまでの学習内容が理解されていないと、
コードをうまく解読できなかったりするのではないでしょうか。
理解に苦しんだらすぐに調べて理解することを繰り返すことで、
学習内容が定着していくと信じています。
ぜひこれまでの記事を辞書的に活用してもらえれば私たちとしてはうれしい限りです。
今回のコードはGitHubの方に載せておきますので、
ぜひ活用してください。
【Python】ループ③(continue・入れ子のループ)
GitHubでの閲覧方法は次の記事を参考にしてください。
それではまた次回お会いしましょう。
おぎー