for,continue,break　繰り返し処理の流れをPython3で説明ーその１

プログラミング始めて簡単なfor文やwhile文は何とか書けるようになったけど、、、


**continue文？break文?どうやって使うんだ？？**
**２重ループ？？３重ループ？？それにif文くわえると処理順序どうなるの？？？**


と行き詰まってしまった私の学習録です。


第１回は１重ループ（for、if、continue、break文）についてです。最後におまけで２重ループが少しだけ出ます。
(２重、３重ループも書こうと思ったら長くなりすぎたので次回にします。汗)

なお、以下のプログラム全てに、コードの読み取りの流れがわかりやすいように左側に番号を打ちました。
プログラムの動作の確認をされたい方はお手数ですが自分で打ち込んでください。
手間ですが良い勉強になりますよ。（私も確認しながらやってますよ。でも間違ってたらすいません汗）


#１重ループ

####１.１ for 文

```python3
01 for i in range(4):
02     print(i)
```
実行結果

```python3
0
1
2
3
```
まずは簡単な for だけの文から。
上のプログラムを実行すると１→２→１→２→１→２→１→２という処理を繰り返しているとわかります。(以後 → 省略)
処理の順番：１２１２１２１２


####１.２ for + if 文

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
```
実行結果

```python3
0
1
```
１２３１２３と行きます、しかし `i = 2` になり ２で`i < 2 == False` になるので ３ の処理が実行されません。その次の`i = 3`のときも同じです。
処理の順番：１２３１２３１２１２

ではここに else 文がある場合はどうでしょうか？

####１.３ for + if + else 文

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
4     else:
5         print('a')
```
実行結果

```python3
0
1
a
a
```
途中までは同じですが先ほど３の処理が実行されなかった所で１に戻らず４５と続きます。
処理の順番：１２３１２３１２４５１２４５

次はelseの代わりにcontinue文を入れます

####１.４ for + if + continue 文

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
4         continue
5     print('a')
```
実行結果

```python3
0
1
a
a
```
プログラムは違うのに同じ実行結果になりました。（書いた本人もびっくり！？)
ただし処理の順番が違います。
continue 文は実行されると continue 文以下の繰り返しをスキップします。上のプログラムの場合は５の`print('a')`が実行されません。
処理の順番：１２３４１２３４１２５１２５

ちなみに上のプログラムの continue 文だけを削除するとどのような実行結果になるでしょうか？
これはおまけです。よかったら考えたり、自分でプログラムを動かしてみて下さい。

####１.４おまけ　continue 文を削除すると...

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
4     print('a')
```
実行結果

```python3
0
a
1
a
a
a
```
いかがでしたか、予想通りでしたか？
１.４では continue 文によりスキップされていた`print('a')`が常に実行されてしまいました。
このように continue 文は、ある条件下で未処理にしたいプログラムがあるときに便利だということがよくわかりました。
処理の順番：１２３４１２３４１２４１２４



####１.５ for + if + break 文

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
4         break
5     print('a')
```
実行結果

```python3
0
```
次は break 文です。１.４の continue 文を break 文に変えただけです
１．４と比べて実行結果が大分変化しました。１２３まで進行して４の break 文を実行するとループ処理が強制終了になります。
ですので本来4回ループするはずが1回で終わってしまいました。
処理の順序：１２３４

最後におまけとして２重ループで break 文があるとどうなるか紹介して終わりにします。

####１.５おまけ１ ２重ループ（for + if 文）

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
4         for j in range(2):
5             print(j+10)
```
実行結果

```python3
0
10
11
1
10
11
```
まず基本的な２重ループの確認です。１の`for i in range(4):`の for 文の内側にさらに
４の`for j in range(2):`のfor 文がある場合です。
処理の順序は１２３まで行き４５４５となり、そこでまた１へと戻ります。

つまり内側のループ処理を全て終わらせてから外側のループ処理に戻るということです。

そして今までと同様に２で`i < 2 == False`になると３が実行されません。
処理の順序：１２３４５４５１２３４５４５１２１２１２

では次は本題の２重ループに break 文がある場合です。

####１.５おまけ２ ２重ループ（for + if + break 文）

```python3
1 for i in range(4):
2     if i < 2:
3         print(i)
4         for j in range(2):
5             print(j+10)
6             break
```
実行結果

```python3
0
10
1
10
```
先ほどの２重ループ文の最後に break を加えただけです。break 文が外側のループにある場合は１.５と同じ結果になるので内側の for 文に入れました。

先ほどと同じように１２３４５まで行き６で break 文を実行、すると break 文は
内側のループ処理を強制終了させます。

次に外側のループに戻り同じく１２３４５６と進み１に戻ります。
そして２で`i < 2 == False`になると３が実行されません。
処理の順序：１２３４５６１２３４５６１２１２

##最後に
この記事を読んでくださりありがとうございました。少しでも役立てば幸いです。
初めての記事でしたので読みづらいところが多々あったかもしれません、その場合はよろしければコメントで教えてください。次回の反省に繋がりますので大変助かります。

実は while 文についても書くつもりでしたが、
**' for 文とあんまり変わんないよな、書かなくていっか'**
と思い書いておりません。勉強不足ですいません汗

**' for 文と while 文の使い分けには、この引用を参考にしろ！もっと勉強しないさい！！'**
というツッコミ大歓迎です。是非お願い致します。

この記事は以下のサイトさまを参考にしております。
>http://www.yamamo10.jp/yamamoto/comp/Python/loop/index.php