くり返しとデータの持ち方

INPUT · スライド

ループの中のループ

01 / 07

くり返しの中にくり返し

for のまとまりの中に書けるのは、print や計算だけではない。for そのものも書けるよ。

これを入れ子という。九九の表、マス目、組み合わせ——「たてとよこ」がある形は、たいていこれで作れるんだ。

02 / 07

形と動き

内側の for は、もう4つ下げて書く。if を入れ子にしたときと同じだね。

下の例を目で追ってみよう。i が 0 のあいだに j が 0 1 2 と最後までまわる。それから i が 1 になって、j はまた 0 からやり直すよ。

for i in range(2):    for j in range(3):        print(i, j)

実行結果

0 0
0 1
0 2
1 0
1 1
1 2

03 / 07

回数はかけ算になる

ここがいちばん大事なところ。外側が1回進むあいだに、内側は最後まで1周する。

外が2回・内が3回なら、いちばん内側が動く回数は 2 * 3 で6回。回数はかけ算と覚えよう。

外が10回・内が10回なら100回。入れ子は回数が一気にふくらむので、表示する量には気をつけてね。

04 / 07

九九を作ってみる

「たてとよこ」の代表がかけ算の表だよ。外側で段を、内側で何をかけるかをまわす。

2の段と3の段だけを出すとこうなる。段のほうを range(2, 4) で決めているのがポイントだよ。

for i in range(2, 4):    for j in range(1, 4):        print(f"{i}かける{j}は{i * j}")

実行結果

2かける1は2
2かける2は4
2かける3は6
3かける1は3
3かける2は6
3かける3は9

05 / 07

マス目を作る

1行ぶんの文字を内側で組み立てて、外側で表示する。この形で四角いマス目が作れるよ。

gyou を空にしているのが外側のくり返しの中だというのがポイント。ここを外に出してしまうと、前の行の文字が残ったまま伸び続けてしまうんだ。

for tate in range(3):    gyou = ""    for yoko in range(4):        gyou += "■"    print(gyou)

実行結果

■■■■
■■■■
■■■■

06 / 07

リストどうしの組み合わせ

in のうしろは range でなくてもいい。リストとリストを組み合わせると、ありえるパターンを全部出せるよ。

色が2つ、サイズが2つなら組み合わせは4通り。ここでも回数はかけ算だね。

for iro in ["あか", "あお"]:    for size in ["S", "M"]:        print(iro, size)

実行結果

あか S
あか M
あお S
あお M

07 / 07

深くしすぎない

入れ子は3段、4段とさらに深くもできる。でも深くなるほど読めなくなるし、回数もふくらむ。

目安は2段まで。3段ほしくなったら、たいていは書きかたを変えられるサインだよ。関数やリストの道具を覚えると、その手が増えていく。

これでくり返しの道具はひととおりそろった。次のグループでは、リストをもっと自由に扱う方法を見ていこう。