1. 3かける3の表を作る
  2. 2かける2の表を作る
  3. 1のときは1文字だけ
  4. 9かける9で九九の表になる
  5. 0のときは空文字を返す
コース一覧
Python入門:基礎文法編
入れ子ループ

Python入門:基礎文法編

変数、条件分岐、ループ、関数、リスト・辞書、ファイル操作など Python の基礎文法を、ブラウザ上で毎レッスン実際にコードを書き、自分だけの「おこづかい帳アプリ」を育てながら学べる無料コースです。プログラミング完全未経験から始められ、環境構築や事前知識は一切不要です。約 18 時間 (1 日 30 分 × 37 日) で 74 レッスンを修了でき、修了後は入力・集計・ファイル保存まで備えたスクリプトを1から書けるようになります。

1
はじめての Python
01. printで表示15分
02. 文字列の連結15分
03. 四則演算15分
04. 実行順序15分
05. コメント15分
06. エラーを読んでみる15分
07. つくる:レシート表示15分
08. 第1章クイズ10分
2
変数とデータ型
01. 変数15分
02. typeで型を調べる15分
03. 数値への変換15分
04. 文字列への変換15分
05. boolとNone15分
06. f-string15分
07. 入力を受け取る15分
08. つくる:入力できるおこづかい帳15分
09. 第2章クイズ10分
3
演算子と式
01. 比較演算子15分
02. 論理演算子15分
03. in演算子15分
04. 剰余と切り捨て除算15分
05. 連鎖比較と優先順位15分
06. 三項演算子15分
07. つくる:予算チェック15分
08. 第3章クイズ10分
4
条件分岐
01. if文の基本15分
02. if / elif / else15分
03. 条件の組み合わせ15分
04. match文15分
05. 定番:FizzBuzz判定15分
06. デフォルト値とor15分
07. つくる:カテゴリ自動判定15分
08. 第4章クイズ10分
5
ループ
01. forで合計15分
02. whileで繰り返す15分
03. rangeとstep15分
04. breakとcontinue15分
05. enumerateで番号付け15分
06. zipで組み合わせ15分
07. 入れ子ループ15分
08. つくる:何件でも記録15分
09. 第5章クイズ10分
6
関数
01. 関数を定義する15分
02. 引数と戻り値15分
03. デフォルト引数15分
04. キーワード引数15分
05. 複数の戻り値15分
06. divmod15分
07. 変数のスコープ15分
08. lambda関数15分
09. つくる:関数に分割15分
10. 第6章クイズ10分
7
リストと辞書
01. リストの追加と削除15分
02. スライス15分
03. 辞書の基本15分
04. 辞書を走査15分
05. keyでソート15分
06. setで重複除去15分
07. リスト内包表記15分
08. タプルアンパック15分
09. つくる:カテゴリ別集計15分
10. 第7章クイズ10分
8
ファイルとエラー処理
01. ファイルを読み込む15分
02. ファイルに書き込む15分
03. withで安全に扱う15分
04. CSV形式で保存15分
05. try-exceptで備える15分
06. 例外の種類15分
07. つくる:保存機能15分
08. 第8章クイズ10分
9
総合制作
01. 全機能を統合しよう15分
02. 月間レポート機能15分
03. 自由拡張15分
04. 完成と次のステップ10分

入れ子ループ

ネストしたループ

縦と横の 2 方向に動きたい

ここまでのループは、1 本の列を上から下へなぞるものでした。ところが表を作りたいとなると、縦と横の 2 方向に動く必要があります。

そこで使うのが 入れ子ループ です。ループの中に、もう 1 つループを書きます。外側の for が 1 周する あいだに、内側の for が最後まで回りきります。

Python

for i in range(1, 4): for j in range(1, 4): print(i, j)

9 行が表示されます。並びは 1 1、1 2、1 3、2 1 と続き、最後が 3 3 です。i が 1 つ進むあいだに j が 3 回まわっていることが読み取れます。

外側と内側で同じ変数名を使ってはいけません。内側でも i を使うと外側の i が上書きされ、進み方が壊れます。外側は i、内側は j のように分けます。

行の入れ物を、どこで空に戻すか

表を 1 本の文字列にするときは、2 段構えで作ります。まず内側のループで 1 行分 を組み立て、それを外側のループで 表全体 に足していきます。

このとき肝心なのが、行の入れ物を空に戻す位置です。外側のループの中、内側のループの前 に置きます。ここが外側より前にあると、1 行目の中身が残ったまま 2 行目が足され、全部の行がつながって 1 行になります。

区切りを手前に足すやり方は、enumerate と zip のときと同じです。違うのは、行の中では半角スペース、行と行のあいだでは改行、と使う文字が 2 種類あることだけです。

解説

入れ子ループが思ったとおりに動かないときは、内側だけを取り出して 1 行分が正しく作れるかを先に確かめます。切り分けてから組み立て直すほうが、まとめて直すより速いです。

回数は掛け算で増える

外側が 3 周、内側が毎周 3 回なら、いちばん内側の処理は 3 * 3 で 9 回動きます。外側が 100 で内側が 100 なら 1 万回です。入れ子ループでは、回数が足し算ではなく掛け算で増えます。

break と continue は、いちばん内側のループ 1 つ にしか効きません。内側で break しても、外側は次の周に進みます。外側まで一気に抜けたいときは、抜けたことを表す変数を用意して外側でも判定するか、処理を関数に切り出して return で抜けます。

やってみよう

関数 multiplication_table(n) を実装してください。引数 n は表の大きさ (int) です。

1 から n までの縦横の掛け算をした表を、1 本の文字列として return します。同じ行の中の数は半角スペース 1 つで区切り、行と行は改行 \n で区切ります。末尾に改行は付けません。

multiplication_table(3) なら "1 2 3\n2 4 6\n3 6 9" です。n が 0 のときは空文字 "" を返します。multiplication_table(9) が本物の九九の表になることも確かめてみてください。

要件

  1. 関数名は multiplication_table で、引数は n の1つだけにする
  2. for を入れ子にして、外側で行、内側で列を作る
  3. 同じ行の数は半角スペース1つで区切り、行と行は \n で区切る
  4. 末尾に改行を付けない。n が 0 のときは空文字を返す

入出力例

multiplication_table(3) → "1 2 3 2 4 6 3 6 9" multiplication_table(2) → "1 2 2 4" multiplication_table(1) → "1" multiplication_table(9) → "1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81" multiplication_table(0) → ""

ヒント

外側は for i in range(1, n + 1)、内側は for j in range(1, n + 1) です

1行分の入れ物 line は外側のループの中、内側のループの前で空にします

掛け算の結果は str(i * j) で文字列に変えてからつなぎます

区切りを手前に足すやり方にすると、行末と表の末尾に余分な文字が残りません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

関連レッスン

  • つくる:何件でも記録

    第5章の総仕上げ。記録の集まりから番号付き一覧と合計を返す show_all を作る

  • 第5章クイズ

    for と while、range の刻み幅、break と continue の違い、enumerate と zip を5問で確認する

  • 関数を定義する

    def で処理に名前を付け、呼び出して使う。定義と呼び出しの違いを理解する

  • リストの追加と削除

    append で追加、remove で削除、len で件数。リストを操作する基本のメソッドを覚える

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 変数データに名前をつけて参照する仕組み
  • 処理計算や代入を表す長方形
  • 関数処理に名前を付けて再利用できる単位
  • 引数位置引数=順番で渡す。
main.py
学習モード
エディタを読み込んでいます

メモ

入れ子ループ

⌘S で保存