制御構文には2種類ありました
そしてこれらの制御構文は入れ子構造にすることが可能です。これをネストといいます。
ネスト
for文の中にfor文を入れる
<br>
for 定数① in ③ ... ④{
for 定数② in ⑤ ... ⑥{
print(定数①,定数②)
}
}
- 1番目のfor文は定数①に③から④までの数が入ります。
- 1番目のfor文の{}内の処理の中に2番目のfor文を入れます。
- 2番目のfor文は定数②に⑤から⑥までの数が入ります。
すごくかんたんにするとこういう流れで処理される
for ①{
for ②{
print(③,④)
}
}
①の処理が始まって、②の処理の回数がすべて終わってから①に戻ります。
①の回数の指定が0…2で②の回数の指定が1…3の場合、①は0を保持したまま、②の1…3を行います。
なので0,1 0,2 0,3そして①に戻り0…2の1が始まる、1,1 1,2 1,3そして①に戻り0…2の2が始まります。2,1 2,2 2,3で終了です。
コードにするとこうなります
for i in 0 ... 2{ ----①番目のfor文
for j in 1 ... 3{ ----②番目のfor文
print(i,j)
}
}
- ①の0…2の0が定数iに代入され{}内の処理に移ります。
- {}内の②のfor文が始まり、1…3の1が定数jに代入されます。
- print(i,j)の処理で0,1になります。
- このときに{}が優先されもう一度、②のfor文が始まります。
- ①で0がiに代入されたまま、②のfor文の1…3の2が始まります。
- print(i,j)の処理で0,2になります。
- {}内に1…3の3が残っているので②のfor文が始まります。
- print(i,j)の処理で0,3になります。
- {}内の②処理が終わったので①の0…2の1が始まります。
- {}内の処理の1…3を同じようにくりかえします。
注目
このような形でfor文の中にfor文だけではなく、
if文の中にfor文、for文の中にif文、if文の中にif文などを入れていくことができます。