LESSON 11

表を二次元リストで扱おう

行と列を使い、表のデータをPythonで読みます。

40分
必須
必須・これまでの復習

これまでの内容から、3問を復習しよう

前回までの内容から、毎回ランダムに3問が選ばれます。同じ復習用ファイルの中身を書き換え、1問ずつ予想・実行します。

今回のファイル名lesson11_review.py

レッスン番号と使う場面が分かる名前にして、あとで探しやすくします。

  1. VS Code上部の「ファイル」をクリック
  2. 「新しいテキスト ファイル」をクリック
  3. Ctrl+S(Macは⌘+S)を押す
  4. lesson11_review.pyと入力して「保存」を押す

ここを確認:画面上のタブ、または左側のファイル一覧にlesson11_review.pyと表示されたら準備完了です。

復習 1・第1回

表示

print(3 + 4)

表示される数は?

考え方を見る

最初から全部を理解しなくて大丈夫です。問題を小さな処理に分け、上から順番に見ていきます。

  1. 最初に問題文を読み、「表示される数は?」の答えとして何を確かめるのか決めます。
  2. 次にコードを上から読みます。変数へ入る値、繰返し、条件分岐が出てきたら、その行で何が変わるかを一つずつ紙に書きます。
  3. 最後に表示される値や残った値を選択肢と比べます。この問題では「3と4を足して7です。」という流れに注目します。
ヒントを見る

コードを自分で考えて作る問題ではありません。上にある見本コードを、復習用ファイルへ一文字ずつそのまま入力します。入力したら保存し、VS Code右上の▶を押します。画面下のターミナルに出た結果と選択肢を比べてください。記号や字下げが分からないときは、見本と同じ位置・同じ数にそろえれば大丈夫です。

復習 2・第2回

変数

x = 5
x = x + 2
print(x)

最後のxは?

考え方を見る

最初から全部を理解しなくて大丈夫です。問題を小さな処理に分け、上から順番に見ていきます。

  1. 最初に問題文を読み、「最後のxは?」の答えとして何を確かめるのか決めます。
  2. 次にコードを上から読みます。変数へ入る値、繰返し、条件分岐が出てきたら、その行で何が変わるかを一つずつ紙に書きます。
  3. 最後に表示される値や残った値を選択肢と比べます。この問題では「5に2を足して7です。」という流れに注目します。
ヒントを見る

コードを自分で考えて作る問題ではありません。上にある見本コードを、復習用ファイルへ一文字ずつそのまま入力します。入力したら保存し、VS Code右上の▶を押します。画面下のターミナルに出た結果と選択肢を比べてください。記号や字下げが分からないときは、見本と同じ位置・同じ数にそろえれば大丈夫です。

復習 3・第3回

条件分岐

n = 8
if n > 5:
    print("大")

表示される文字は?

考え方を見る

最初から全部を理解しなくて大丈夫です。問題を小さな処理に分け、上から順番に見ていきます。

  1. 最初に問題文を読み、「表示される文字は?」の答えとして何を確かめるのか決めます。
  2. 次にコードを上から読みます。変数へ入る値、繰返し、条件分岐が出てきたら、その行で何が変わるかを一つずつ紙に書きます。
  3. 最後に表示される値や残った値を選択肢と比べます。この問題では「8は5より大きいからです。」という流れに注目します。
ヒントを見る

コードを自分で考えて作る問題ではありません。上にある見本コードを、復習用ファイルへ一文字ずつそのまま入力します。入力したら保存し、VS Code右上の▶を押します。画面下のターミナルに出た結果と選択肢を比べてください。記号や字下げが分からないときは、見本と同じ位置・同じ数にそろえれば大丈夫です。

復習を終えたことを確認

実際に自分のパソコンで行ってから、チェックを入れてください。

◎
今日のゴール

表の行・列と二次元リストの添字を結びつけ、値を取り出せる。

  • ✓二重の角かっこの意味が分かる
  • ✓行と列を0から数えられる
  • ✓二重ループを順番に追える
STEP 1

二次元リストって何?

今からやること
  1. 座席表の例で行と列を知る
  2. 二重の角かっこから値を取り出す
  3. 二重ループで表全体を見る
  4. 行ごとの合計を求める
  5. 必須問題で自分で確かめる

教室の座席表は、横の「行」と縦の「列」で場所を表せます。Pythonでは、リストの中にリストを入れると表を作れます。これを二次元リストと呼びます。

scores = [
    [70, 80, 90],
    [60, 75, 85]
]
scores[0][1]→0行目→1列目の80

この講座では:外側が行、内側がその行の値を順番に選ぶと読めれば十分です。Pythonでは行と列を0から数えます。

STEP 2

表から値を取り出そう

今回のファイル名lesson11_step02.py

レッスン番号と使う場面が分かる名前にして、あとで探しやすくします。

  1. VS Code上部の「ファイル」をクリック
  2. 「新しいテキスト ファイル」をクリック
  3. Ctrl+S(Macは⌘+S)を押す
  4. lesson11_step02.pyと入力して「保存」を押す

ここを確認:画面上のタブ、または左側のファイル一覧にlesson11_step02.pyと表示されたら準備完了です。

この順番で実践します
  1. lesson11_step02.pyへ、見本コードを一文字ずつ入力する
  2. まだ実行せず、結果を予想する
  3. 保存して、VS Code右上の▶を押す
  4. 下のターミナルと教材の結果を比べる
scores = [
    [70, 80, 90],
    [60, 75, 85]
]

print(scores[0][1])
print(scores[1][2])

2行目に表示される数は?

先に自分のパソコンで実行しましょう。画面に出た結果を見てから、下のボタンを押します。

STEP 3

二重ループで表全体を見よう

外側のforが行を選び、内側のforがその行の値を一つずつ選びます。内側が終わると、次の行へ進みます。

scores = [[70, 80, 90], [60, 75, 85]]

for row in scores:
    for score in row:
        print(score)
1行目を選ぶ→70・80・90→2行目を選ぶ→60・75・85

全部で何個の数が表示される?

STEP 4

ここまで分かったか確認しよう

今回のファイル名lesson11_step04.py

この回の必須問題で使うファイルです。問題ごとに中身を書き換えます。

  1. VS Code上部の「ファイル」をクリック
  2. 「新しいテキスト ファイル」をクリック
  3. Ctrl+S(Macは⌘+S)を押す
  4. lesson11_step04.pyと入力して「保存」を押す

ここを確認:画面上のタブ、または左側のファイル一覧にlesson11_step04.pyと表示されたら準備完了です。

必須問題の進め方
  1. lesson11_step04.pyを作る
  2. 問題のコードを入力して保存・実行する
  3. 同じファイルを書き換えて次の問題へ進む
必須 1

値を一つ取り出す

A=[[1,2,3],[4,5,6]]から5を表示します。

考え方を見る

最初から全部を理解しなくて大丈夫です。問題を小さな処理に分け、上から順番に見ていきます。

  1. 最初に問題文を読み、「何を作るか」「最後に何を表示するか」を確認します。
  2. まず、見本コードのどの値を変える問題か確認します。次に、変えた後の値をコードの上から順番に紙へ書いて追いましょう。

  3. 次にコードを上から一行ずつ読みます。値が変わるたびに紙へ書き、最後の結果が問題の条件に合うか確かめます。
ヒントを見る

5は2行目、2列目です。Pythonでは0から数えます。

答えを見る
A=[[1,2,3],[4,5,6]]
print(A[1][1])
必須 2

1行目の合計

scoresの1行目70、80、90の合計を表示します。

考え方を見る

最初から全部を理解しなくて大丈夫です。問題を小さな処理に分け、上から順番に見ていきます。

  1. 最初に問題文を読み、「何を作るか」「最後に何を表示するか」を確認します。
  2. まず、見本コードのどの値を変える問題か確認します。次に、変えた後の値をコードの上から順番に紙へ書いて追いましょう。

  3. 次にコードを上から一行ずつ読みます。値が変わるたびに紙へ書き、最後の結果が問題の条件に合うか確かめます。
ヒントを見る

sum(scores[0])で0行目だけを合計できます。

答えを見る
scores=[[70,80,90],[60,75,85]]
print(sum(scores[0]))
必須 3

表全体の合計

二重ループを使い、6個すべての合計を求めます。

考え方を見る

最初から全部を理解しなくて大丈夫です。問題を小さな処理に分け、上から順番に見ていきます。

  1. 最初に問題文を読み、「何を作るか」「最後に何を表示するか」を確認します。
  2. まず、見本コードのどの値を変える問題か確認します。次に、変えた後の値をコードの上から順番に紙へ書いて追いましょう。

  3. 次にコードを上から一行ずつ読みます。値が変わるたびに紙へ書き、最後の結果が問題の条件に合うか確かめます。
ヒントを見る

totalを0にし、内側のループでscoreを足します。

答えを見る
scores=[[70,80,90],[60,75,85]]
total=0
for row in scores:
    for score in row:
        total=total+score
print(total)
実践したことを確認

実際に自分のパソコンで行ってから、チェックを入れてください。

時間が余ったら

できるだけ解いてみよう

全10問

全部終わらなくても大丈夫です。上から順番に挑戦しましょう。

  1. 1. A=[[1,2],[3,4]]から4を表示
    ヒントを見る

    2行目・2列目です。

    答えを見る
    print(A[1][1])
  2. 2. Aの1行目を表示
    ヒントを見る

    最初の添字だけ使います。

    答えを見る
    print(A[0])
  3. 3. 3行2列の表を作る
    ヒントを見る

    2個の値を持つリストを3個入れます。

    答えを見る
    A=[[1,2],[3,4],[5,6]]
  4. 4. 行の数を求める
    ヒントを見る

    外側のリストの長さです。

    答えを見る
    print(len(A))
  5. 5. 列の数を求める
    ヒントを見る

    1行目の長さです。

    答えを見る
    print(len(A[0]))
  6. 6. 2行目の合計
    ヒントを見る

    添字1の行をsumへ渡します。

    答えを見る
    print(sum(A[1]))
  7. 7. すべての値を表示
    ヒントを見る

    forを二つ重ねます。

    答えを見る
    for row in A:
        for value in row:
            print(value)
  8. 8. 5より大きい値だけ表示
    ヒントを見る

    内側のループにifを入れます。

    答えを見る
    for row in A:
        for value in row:
            if value > 5:
                print(value)
  9. 9. 表全体の個数
    ヒントを見る

    行数×列数です。

    答えを見る
    len(A) * len(A[0])
  10. 10. 座席表を文字で作る
    ヒントを見る

    名前を文字列にして行ごとにまとめます。

    答えを見る
    seats=[["青木","伊藤"],["上田","遠藤"]]