10.制御構文3(ネスト)

そしてこれらの制御構文は入れ子構造にすることが可能です。これをネストといいます。

ネスト

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文などを入れていくことができます。

11.スコープ11.スコープ