05 / 90

Day 05: 変更・同一性・型・比較

変更(ミューテーション)と再束縛の違いを説明し、== と is を意図して使い分け、誤解を招く入力と初心者に典型的な失敗を、観測できる Python の出力で診断する。

自律学習手法と Python 480 分(8 時間の集中学習)
01 120 分

変更と再束縛のトレース

独立習得チェック — 評価対象の作業中に AI の支援は受けられません。支援を受けた場合は誠実に申告することが必須ですが、支援を受けた作業はあくまで復習扱いです。習得を主張する前に、新しい無支援チェックを完了してください。

前提条件

Day 04 の値と束縛のチェックを完了していること。短い Python ファイルを保存してターミナルから実行できること。

学習目標

append が 2 つの名前で共有されたリストを変更するのに対し、a = a + [2] は名前 a だけを再束縛する理由を、予測・実行・説明によって示す。

手順

必須作業:
1. 何も実行する前に、2 行の出力の予測を下書き欄に書く。
2. 演習のプログラムを trace.py として保存し、python trace.py を実行する。
3. 実際の出力をそのまま予測の横に写し、食い違いをすべて印で示す。
4. 各ケースについて、そのケースの 3 行目の後で a と b がどのリストオブジェクトを指しているかを 1〜2 文で説明する。

任意作業(必須の証拠がそろってからのみ):各ケースの後に print(id(a), id(b)) を加え、2 つの id が一致するのはケース 1 だけであることを確認する。

演習と予測記録

出力を予測してから実行してください:

a = [1]
b = a
a.append(2)
print("case 1:", a, b, a is b)
a = [1]
b = a
a = a + [2]
print("case 2:", a, b, a is b)

ケース 1 では b が変わるのに、ケース 2 では変わらないのはなぜですか?

客観的理解度チェックと診断トレース

以下の設問に解答して理解度を確認してください。提出前に利用した補助条件を誠実に申告してください。

申告補助条件

注記: AI不使用は誠実な申告条件であり、監視や強制検知ではありません。

1.

a = [1]、b = a、a = a + [2] の順に実行した後、print(b) は何を表示しますか?

解答根拠と履歴

    習得基準

    AI の支援なしで、実行前の予測、2 行の正確な出力、そして共有オブジェクトの変更(ケース 1)と 1 つの名前の新しいオブジェクトへの再束縛(ケース 2)を区別した正しい説明を記録していること。

    公式ソースリソースと権利証跡

    linking PSF License Version 2

    Python Standard Library: Built-in Types

    著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

    該当セクション・タイムスタンプ: 対象節:真理値判定、比較、可変シーケンス型

    検証バージョンと日付: Python 3.12 documentation (verified 2026-10-30)

    選定理由:

    真理値判定、比較、束縛、変更の動作を確認するための規範的な参照資料。

    ソース前提知識:

    Day 03 の復習ドリル

    安全フォールバック(オフライン回復性):

    掲載された Python の例を実行し、インストール済みインタープリタのヘルプを参照してください。

    比較対象候補リソースと選定評価 (2)
    Python Data Model reference ↗ compared_alternative [PSF License Version 2]

    式を扱う演習に必要な範囲よりも深いオブジェクトの意味論を扱う資料です。演算子レベルの内容に範囲を絞るため、stdtypes を選びました。

    The Python Tutorial: An Informal Introduction ↗ compared_alternative [PSF License Version 2]

    同じ演算子を解説する入門資料です。正式な仕様の参照元として、ライブラリリファレンスを選びました。

    linking CC BY-NC-SA 3.0 (book) noncommercial share-alike

    Git User Manual: Recording Changes

    著者・提供機関: Git project | オリジナル出所URL ↗

    該当セクション・タイムスタンプ: リポジトリへの変更の記録の節

    検証バージョンと日付: Verified 2026-10-30

    選定理由:

    安全にコミットする前に小さな差分を確認するための一次資料。

    ソース前提知識:

    Git の基礎知識

    安全フォールバック(オフライン回復性):

    ローカルで `git diff` と `git status` を使い、差分を理解するまではコミットしないでください。

    比較対象候補リソースと選定評価 (2)
    git-diff command reference ↗ compared_alternative [Git documentation (GPL-2.0)]

    コマンドのオプションを調べるための資料です。コミット前に変更を確認する手順を案内する Pro Git の章を選びました。

    Atlassian Git tutorials: git diff ↗ compared_alternative [All Rights Reserved]

    読みやすい商用の解説です。同じ変更確認の習慣について、書籍の章はステージングとインデックスの意味をより深く説明しています。

    02 120 分

    等価性・同一性と誤解を招く入力

    独立習得チェック — 評価対象の作業中に AI の支援は受けられません。支援を受けた場合は誠実に申告することが必須ですが、支援を受けた作業はあくまで復習扱いです。習得を主張する前に、新しい無支援チェックを完了してください。

    前提条件

    アクティビティ 1(変更と再束縛)を完了していること。Day 04 の値と型のチェック。

    学習目標

    値の比較には ==、同一性には is(特に is None)を使い分け、テキストの "3" と整数の 3 のような誤解を招く入力を、出力による証拠で明らかにする。

    手順

    必須作業:
    1. 4 行の出力に含まれるすべての値について予測を書く。
    2. プログラムを compare.py として保存して実行し、実際の出力をそのまま予測の横に記録する。
    3. [1] == [1] が True なのに [1] is [1] が False になる理由を説明する。
    4. 見た目は 3 なのに raw == 3 が False になる理由と、int(raw) によって何が変わるかを説明する。
    5. None の判定に value is None が推奨される理由を説明する。

    任意作業(必須の証拠がそろってからのみ):raw を " 3 "、次に "3.0" に変え、そのたびに int(raw) がどうなるかを予測してから実行する。

    演習と予測記録

    すべての値を予測してからプログラムを実行してください。raw は、ユーザーが 3 と入力したときに input() が返すものを表します。input() は常に文字列を返します。

    print(1 == True, 0 == False)
    print([1] == [1], [1] is [1])
    raw = "3"
    print(raw == 3, int(raw) == 3)
    value = None
    print(value is None)

    客観的理解度チェックと診断トレース

    以下の設問に解答して理解度を確認してください。提出前に利用した補助条件を誠実に申告してください。

    申告補助条件

    注記: AI不使用は誠実な申告条件であり、監視や強制検知ではありません。

    1.

    if value == None: より if value is None: が推奨されるのはなぜですか?

    解答根拠と履歴

      習得基準

      AI の支援なしで、4 行すべてについて予測と正確な出力を記録し、値の等価性(==)とオブジェクトの同一性(is)を正しく区別し、str と int の不一致を指摘し、is None を使う理由を説明していること。

      公式ソースリソースと権利証跡

      linking PSF License Version 2

      Python Standard Library: Built-in Types

      著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

      該当セクション・タイムスタンプ: 対象節:真理値判定、比較、可変シーケンス型

      検証バージョンと日付: Python 3.12 documentation (verified 2026-10-30)

      選定理由:

      真理値判定、比較、束縛、変更の動作を確認するための規範的な参照資料。

      ソース前提知識:

      Day 03 の復習ドリル

      安全フォールバック(オフライン回復性):

      掲載された Python の例を実行し、インストール済みインタープリタのヘルプを参照してください。

      比較対象候補リソースと選定評価 (2)
      Python Data Model reference ↗ compared_alternative [PSF License Version 2]

      式を扱う演習に必要な範囲よりも深いオブジェクトの意味論を扱う資料です。演算子レベルの内容に範囲を絞るため、stdtypes を選びました。

      The Python Tutorial: An Informal Introduction ↗ compared_alternative [PSF License Version 2]

      同じ演算子を解説する入門資料です。正式な仕様の参照元として、ライブラリリファレンスを選びました。

      linking CC BY-NC-SA 3.0 (book) noncommercial share-alike

      Git User Manual: Recording Changes

      著者・提供機関: Git project | オリジナル出所URL ↗

      該当セクション・タイムスタンプ: リポジトリへの変更の記録の節

      検証バージョンと日付: Verified 2026-10-30

      選定理由:

      安全にコミットする前に小さな差分を確認するための一次資料。

      ソース前提知識:

      Git の基礎知識

      安全フォールバック(オフライン回復性):

      ローカルで `git diff` と `git status` を使い、差分を理解するまではコミットしないでください。

      比較対象候補リソースと選定評価 (2)
      git-diff command reference ↗ compared_alternative [Git documentation (GPL-2.0)]

      コマンドのオプションを調べるための資料です。コミット前に変更を確認する手順を案内する Pro Git の章を選びました。

      Atlassian Git tutorials: git diff ↗ compared_alternative [All Rights Reserved]

      読みやすい商用の解説です。同じ変更確認の習慣について、書籍の章はステージングとインデックスの意味をより深く説明しています。

      03 120 分

      初心者の失敗クリニック:SyntaxError、str と int、None

      エージェント支援エンジニアリングチェック — 認可されたコーディングエージェントに診断の手助けを求めてもかまいません。使用したツール、読み取り・変更を許可した範囲、レビュー境界を宣言してください。すべてのスターターと修正版は自分で実行し、すべての差分を自分でレビューすること。エージェントの出力は独立した証拠ではありません。認可されたツールが使えない場合は手作業でクリニックを行い、エージェント部分を「ブロック済み・未実行」と記録してください。

      前提条件

      アクティビティ 1〜2 を完了していること。トレースバックの最終行を読み、`diff` または `git diff` で 2 つのファイルを比較できること。

      学習目標

      完全なスターターファイルから初心者に典型的な 3 つの失敗を再現し、編集前に失敗の種類を特定し、最小限の修正を加え、修正後の出力とエッジケースで確認する。

      手順

      必須作業:
      1. 演習の 3 つのスターターファイルを、示されたとおりに保存する。
      2. それぞれ実行する前に予測を書く:失敗するか、するならどの種類か(構文エラー、型・値の不一致、None に対する無効な操作)。
      3. 各スターターを実行し、エラーの最終行または出力をそのまま写す。
      4. 各スターターを最小限の変更で修正して fixed_syntax.py・fixed_compare.py・fixed_none.py として保存し、diff -u starter_x.py fixed_x.py(または git diff)で比較してから、修正版を実行する。
      5. 比較のバグについては、修正後に 2 つのエッジケース raw = "4" と raw = "three" を実行し、プログラムが受け付ける入力を明記する。
      6. エージェントを使った場合は、ツール、権限、提案内容、そして検証または却下した提案を記録する。

      任意作業(必須の証拠がそろってからのみ):比較プログラムが数値でないテキストに対して、トレースバックではなく分かりやすいメッセージを出して拒否するようにする。

      演習と予測記録

      それぞれちょうど 1 つのバグを含む、3 つの完全なスタータープログラム:

      starter_syntax.py

      score = 3
      if score = 3:
      print("passed")

      starter_compare.py (raw は、ユーザーが 3 と入力したときに input() が返すものを表します)

      raw = "3"
      if raw == 3:
      print("passed")
      else:
      print("not passed:", repr(raw), type(raw).__name__)

      starter_none.py

      items = None
      items.append(1)
      print(items)

      それぞれを実行し、失敗の種類を特定して修正し、修正後の出力を示してください。

      客観的理解度チェックと診断トレース

      以下の設問に解答して理解度を確認してください。提出前に利用した補助条件を誠実に申告してください。

      申告補助条件

      注記: AI不使用は誠実な申告条件であり、監視や強制検知ではありません。

      1.

      starter_compare.py はエラーなく実行されますが、not passed: '3' str と表示します。これはどの種類の失敗ですか?

      解答根拠と履歴

        習得基準

        3 つのスターターすべてについて、予測、正確なエラー行または出力、失敗の種類、最小限の差分、修正後の出力を記録していること。比較の修正を raw = "4" と raw = "three" で確認していること。エージェントを使った場合は、ツール・権限・レビュー境界を申告していること。

        公式ソースリソースと権利証跡

        linking PSF License Version 2

        Python Standard Library: Built-in Types

        著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

        該当セクション・タイムスタンプ: 対象節:真理値判定、比較、可変シーケンス型

        検証バージョンと日付: Python 3.12 documentation (verified 2026-10-30)

        選定理由:

        真理値判定、比較、束縛、変更の動作を確認するための規範的な参照資料。

        ソース前提知識:

        Day 03 の復習ドリル

        安全フォールバック(オフライン回復性):

        掲載された Python の例を実行し、インストール済みインタープリタのヘルプを参照してください。

        比較対象候補リソースと選定評価 (2)
        Python Data Model reference ↗ compared_alternative [PSF License Version 2]

        式を扱う演習に必要な範囲よりも深いオブジェクトの意味論を扱う資料です。演算子レベルの内容に範囲を絞るため、stdtypes を選びました。

        The Python Tutorial: An Informal Introduction ↗ compared_alternative [PSF License Version 2]

        同じ演算子を解説する入門資料です。正式な仕様の参照元として、ライブラリリファレンスを選びました。

        linking CC BY-NC-SA 3.0 (book) noncommercial share-alike

        Git User Manual: Recording Changes

        著者・提供機関: Git project | オリジナル出所URL ↗

        該当セクション・タイムスタンプ: リポジトリへの変更の記録の節

        検証バージョンと日付: Verified 2026-10-30

        選定理由:

        安全にコミットする前に小さな差分を確認するための一次資料。

        ソース前提知識:

        Git の基礎知識

        安全フォールバック(オフライン回復性):

        ローカルで `git diff` と `git status` を使い、差分を理解するまではコミットしないでください。

        比較対象候補リソースと選定評価 (2)
        git-diff command reference ↗ compared_alternative [Git documentation (GPL-2.0)]

        コマンドのオプションを調べるための資料です。コミット前に変更を確認する手順を案内する Pro Git の章を選びました。

        Atlassian Git tutorials: git diff ↗ compared_alternative [All Rights Reserved]

        読みやすい商用の解説です。同じ変更確認の習慣について、書籍の章はステージングとインデックスの意味をより深く説明しています。

        04 120 分

        復習:トレース表、4 つの比較予測、予防ルール

        独立習得チェック — 評価対象の作業中に AI の支援は受けられません。支援を受けた場合は誠実に申告することが必須ですが、支援を受けた作業はあくまで復習扱いです。習得を主張する前に、新しい無支援チェックを完了してください。

        前提条件

        アクティビティ 1〜3 を完了し、失敗クリニックの証拠を記録していること。

        学習目標

        この日の証拠を独力で再現する:変更と再束縛の 2 列トレース、予測してから検証する 4 つの比較、クリニックの各失敗に対する予防ルール 1 つずつ。

        手順

        必須作業:
        1. AI の支援なしで、コードを実行する前に 2 列のトレース(1 列目:append による変更、2 列目:a = a + [2] による再束縛)を埋め、各行の後の a、b、a is b を示す。
        2. 4 つの比較 1 == True、[1] == [1]、[1] is [1]、"3" == 3 について予測(True または False)を書く。
        3. 演習のプログラムを実行し、各予測が正しかったかどうかを印で示す。
        4. クリニックの 3 つの失敗(構文エラー、str と int、None)それぞれについて予防ルールを 1 つ書き、根拠となる観測した出力行を引用する。

        任意作業(必須の証拠がそろってからのみ):等価性と同一性を組み合わせた新しい比較を 1 つ考え、予測してから検証する。

        演習と予測記録

        先にトレースと 4 つの予測を書き、それから実行してください:

        a = [1]
        b = a
        a.append(2)
        print("mutation:", a, b, a is b)
        a = [1]
        b = a
        a = a + [2]
        print("rebinding:", a, b, a is b)
        print(1 == True)
        print([1] == [1])
        print([1] is [1])
        print("3" == 3)

        客観的理解度チェックと診断トレース

        以下の設問に解答して理解度を確認してください。提出前に利用した補助条件を誠実に申告してください。

        申告補助条件

        注記: AI不使用は誠実な申告条件であり、監視や強制検知ではありません。

        1.

        等価性ではなく同一性についての問いはどれですか?

        解答根拠と履歴

          習得基準

          AI の支援なしで、実行前のトレースが正しく、4 つの予測をすべて記録して実際の出力と照合し、3 つの予防ルールのそれぞれが観測した出力行を引用していること。

          公式ソースリソースと権利証跡

          linking PSF License Version 2

          Python Standard Library: Built-in Types

          著者・提供機関: Python Software Foundation | オリジナル出所URL ↗

          該当セクション・タイムスタンプ: 対象節:真理値判定、比較、可変シーケンス型

          検証バージョンと日付: Python 3.12 documentation (verified 2026-10-30)

          選定理由:

          真理値判定、比較、束縛、変更の動作を確認するための規範的な参照資料。

          ソース前提知識:

          Day 03 の復習ドリル

          安全フォールバック(オフライン回復性):

          掲載された Python の例を実行し、インストール済みインタープリタのヘルプを参照してください。

          比較対象候補リソースと選定評価 (2)
          Python Data Model reference ↗ compared_alternative [PSF License Version 2]

          式を扱う演習に必要な範囲よりも深いオブジェクトの意味論を扱う資料です。演算子レベルの内容に範囲を絞るため、stdtypes を選びました。

          The Python Tutorial: An Informal Introduction ↗ compared_alternative [PSF License Version 2]

          同じ演算子を解説する入門資料です。正式な仕様の参照元として、ライブラリリファレンスを選びました。

          linking CC BY-NC-SA 3.0 (book) noncommercial share-alike

          Git User Manual: Recording Changes

          著者・提供機関: Git project | オリジナル出所URL ↗

          該当セクション・タイムスタンプ: リポジトリへの変更の記録の節

          検証バージョンと日付: Verified 2026-10-30

          選定理由:

          安全にコミットする前に小さな差分を確認するための一次資料。

          ソース前提知識:

          Git の基礎知識

          安全フォールバック(オフライン回復性):

          ローカルで `git diff` と `git status` を使い、差分を理解するまではコミットしないでください。

          比較対象候補リソースと選定評価 (2)
          git-diff command reference ↗ compared_alternative [Git documentation (GPL-2.0)]

          コマンドのオプションを調べるための資料です。コミット前に変更を確認する手順を案内する Pro Git の章を選びました。

          Atlassian Git tutorials: git diff ↗ compared_alternative [All Rights Reserved]

          読みやすい商用の解説です。同じ変更確認の習慣について、書籍の章はステージングとインデックスの意味をより深く説明しています。