LESSON 07

リストを検索・集計しよう

条件に合う値を探し、個数や合計を求めます。

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

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

前回までの内容から、毎回ランダムに3問が選ばれます。復習用ファイルは一つだけ作り、問題ごとに中身を書き換えます。

今回のファイル名lesson07_review.py

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

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

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

復習 1

変数

x = 3
x = x * 2
print(x)

結果は?

考え方を見る

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

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

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

復習 2

ifとfor

for i in range(4):
    if i >= 2:
        print(i)

表示される組は?

考え方を見る

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

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

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

復習 3

リスト

A=[2,4,6]
print(A[2])

結果は?

考え方を見る

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

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

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

復習を終えたことを確認

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

◎
今日のゴール

線形探索と条件付き集計を実行できる。

  • ✓順番に探す意味を説明できる
  • ✓件数を数えられる
  • ✓最大値を更新できる
STEP 1

検索は何をしているの?

今からやること
  1. 線形探索の流れを図で理解する
  2. 探すコードを入力する
  3. 条件に合う個数を数える
  4. 最大値を更新する
  5. 必須問題で確かめる

名簿から名前を探すとき、先頭から一人ずつ確認できます。この方法を線形探索と呼びます。値が見つかるまで同じ比較を繰り返します。

70→85→90 発見→終了

メリット:リストの並び方が分からなくても、順番に確認すれば必ず探せます。

STEP 2

値を探して実行しよう

今回のファイル名lesson07_step02.py

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

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

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

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

for score in scores:
    if score == target:
        found = True

print(found)

最後に表示されるものは?

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

STEP 3

件数と最大値を求めよう

scores = [70, 85, 60, 90]
count = 0
maximum = scores[0]

for score in scores:
    if score >= 80:
        count = count + 1
    if score > maximum:
        maximum = score

print(count)
print(maximum)

80以上は85と90の2個です。maximumは70→85→90と更新されます。

表示される2行は?

STEP 4

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

今回のファイル名lesson07_step04.py

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

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

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

必須問題の進め方
  1. lesson07_step04.pyを作る
  2. 入力・保存・実行する
  3. ヒントと答えで確認し、同じファイルを書き換える
必須 1

偶数を数える

[2, 5, 8, 9, 12]の偶数を数えます。

考え方を見る

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

  1. 最初に問題文を読み、「何を作るか」「最後に何を表示するか」を確認します。
  2. リストを一つずつ見て、偶数だった回だけcountを増やします。

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

n % 2 == 0のときcountを1増やします。

答えを見る
A=[2,5,8,9,12]
count=0
for n in A:
    if n % 2 == 0:
        count=count+1
print(count)

ターミナルに3と表示されたら成功です。

必須 2

最小値を探す

リストの最小値を、順番に比較して求めます。

考え方を見る

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

  1. 最初に問題文を読み、「何を作るか」「最後に何を表示するか」を確認します。
  2. 最初の値を仮の最小値にし、もっと小さい値を見つけたときだけ更新します。

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

minimumを最初の値から始めます。

答えを見る
A=[8,3,6,2]
minimum=A[0]
for n in A:
    if n < minimum:
        minimum=n
print(minimum)

ターミナルに2と表示されたら成功です。

必須 3

70点以上の合計

[55, 70, 82, 64, 90]から70点以上だけを合計します。

考え方を見る

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

  1. 最初に問題文を読み、「何を作るか」「最後に何を表示するか」を確認します。
  2. 各点数を70と比べ、条件を満たす点数だけtotalへ足します。

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

totalを0で用意し、ifの中でtotal += scoreとします。

答えを見る
scores=[55,70,82,64,90]
total=0
for score in scores:
    if score >= 70:
        total += score
print(total)

ターミナルに242と表示されたら成功です。

実践したことを確認

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

時間が余ったら

できるだけ解いてみよう

全10問
  1. 1. 5を探す
    ヒントを見る

    forと==を使います。

    答えを見る
    for n in A:
        if n == 5:
            print("発見")
  2. 2. 10以上を数える
    ヒントを見る

    countを0から始めます。

    答えを見る
    count=0
    for n in A:
        if n>=10: count=count+1
  3. 3. 奇数だけ表示する
    ヒントを見る

    2で割った余りが1です。

    答えを見る
    for n in A:
        if n%2==1: print(n)
  4. 4. 文字列を探す
    ヒントを見る

    文字も==で比べます。

    答えを見る
    for name in names:
        if name=="結城": print("発見")
  5. 5. 合格者の合計点
    ヒントを見る

    60以上だけ足します。

    答えを見る
    total=0
    for s in scores:
        if s>=60: total=total+s
  6. 6. 最小値を求める
    ヒントを見る

    最初の値をminimumにします。

    答えを見る
    minimum=A[0]
    for n in A:
        if n<minimum: minimum=n
  7. 7. 見つかった位置を表示
    ヒントを見る

    range(len(A))を使います。

    答えを見る
    for i in range(len(A)):
        if A[i]==target: print(i)
  8. 8. True/Falseで記録
    ヒントを見る

    foundをFalseから始めます。

    答えを見る
    found=False
    for n in A:
        if n==target: found=True
  9. 9. 平均以上を数える
    ヒントを見る

    先に平均を求めます。

    答えを見る
    avg=sum(A)/len(A)
    count=0
    for n in A:
        if n>=avg: count+=1
  10. 10. 検索を関数にする
    ヒントを見る

    見つけたらTrueをreturnします。

    答えを見る
    def find(A,target):
        for n in A:
            if n==target: return True
        return False