04 / 90

Day 04: 値・束縛・観測可能なテキスト

Python の式を予測して実行し、値と変数の束縛を区別し、ラベルをオブジェクトそのものと混同せずに観測できるテキスト/データを報告します。

自律学習手法と Python エンジニアリング基礎 480 分(8 時間の集中学習)
01 120 分

値の調査と型ラベル

独立習得チェック(AI 支援なし)。

前提条件

Day 03 のリカバリードリルを完了していること。ターミナルから Python を起動できること。予測→観察の手順を復習しておくこと。

学習目標

repr()、type()、bool() を使って、画面上では似て見える値(0、"0"、""、None)を区別し、テキストの "0" が数値の 0 ではない理由を説明できる。

手順

参照資料: この活動に割り当てられた既存の読解・練習時間内で、Automate the Boring Stuff with Python, 3rd edition の Chapter 1; Practice Questions; Appendix B answers を参照し、ローカル課題とのつながりを一つ自分の言葉で説明する。既存の演習と合格基準は維持し、外部資料が開けない場合は本コース独自の説明を使う。必須課題:次のコードを census.py として保存します。実行する前に、出力される各行の予測を書き出してください。その後 python3 census.py を実行し、正確な出力を記録して予測と比較します。

for value in [0, "0", "", None]:
    print(repr(value), type(value).__name__, bool(value))
print("0" == 0, int("0") == 0)

"0"(テキスト)と 0(整数)が、repr() の表示・型・真偽値のすべてで異なる理由を 1~2 文で説明してください。

任意課題:必須の証拠がそろった後でのみ、好きな値(例:0.0 や "False")をリストに 1 つ追加し、その行を予測してから再実行します。

演習と予測記録

次のプログラムを実行する前に 5 行すべての出力を予測し、その後で正確な出力を記録してください。

for value in [0, "0", "", None]:
    print(repr(value), type(value).__name__, bool(value))
print("0" == 0, int("0") == 0)

最後に、テキストの "0" が数値のゼロではない理由を説明してください。

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

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

申告補助条件

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

1.

print(repr("0"), type("0").__name__, bool("0")) は何を出力しますか?

解答根拠と履歴

    アクティビティの習得基準

    予測ログと観測した出力に上記 5 行が正確に含まれ、説明の中で型の違い(str と int)、真偽値の規則(空でない文字列は True)、int() による明示的な変換が必要なことに触れていること。ログには必須/任意の区別と、AI 支援を使っていないことを明記すること。

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

    linking Copyright Al Sweigart; edition-specific reuse terms unverified linking only; no reproduction

    Automate the Boring Stuff with Python, 3rd edition

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

    該当セクション・タイムスタンプ: Chapter 1; Practice Questions; Appendix B answers

    検証バージョンと日付: Public edition checked 2026-11-01; moving pages may change

    選定理由:

    Beginner teaching and answer-keyed practice before checking exact semantics in the Python reference; selected chapters only, not the book's entire automation stack.

    ソース前提知識:

    No prior programming required for Chapter 1; later chapters assume its basic Python concepts.

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

    Use the original localized explanations, exercises and checks already present in this activity; no external account or purchase is required for that fallback.

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

    Guided Python syntax but assumes programming familiarity; paired with the beginner text rather than used as its replacement.

    MIT OCW 6.0001 ↗ compared_alternative [CC BY-NC-SA 4.0]

    Lectures and problem sets teach a broader CS1 course; the book offers shorter text-first entry and an answer appendix.

    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 支援なし)。

    前提条件

    Day 04 のアクティビティ 1 を完了していること。ターミナルから Python を起動できること。

    学習目標

    代入文を「名前がオブジェクトに束縛される」こととして追跡し、ある名前を再束縛しても別の名前が参照するオブジェクトは変わらないことを予測できる。

    手順

    必須課題:次のコードを binding.py として保存します。実行する前に、3 行の出力それぞれを予測し、代入ごとに「名前 → 参照先のリストオブジェクト」の矢印を 1 本ずつ描いてください。

    x = ["draft"]
    y = x
    x = ["replaced"]
    print(y)
    print(x)
    print(x is y)

    python3 binding.py を実行して正確な出力を記録し、3 行目でどの束縛が変わり、どの束縛が変わらなかったかを説明します。

    任意課題:必須の証拠がそろった後でのみ、3 行目の前後に print(id(x), id(y)) を追加し、何が変わるかを説明します。

    演習と予測記録

    次のプログラムの 3 行の出力を予測し、実行して、どの名前が再束縛されたかを説明してください。

    x = ["draft"]
    y = x
    x = ["replaced"]
    print(y)
    print(x)
    print(x is y)

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

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

    申告補助条件

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

    1.

    x = ["draft"]; y = x; x = ["replaced"] を実行した後、print(y) は何を表示しますか?

    解答根拠と履歴

      アクティビティの習得基準

      予測ログと観測した出力に上記 3 行が正確に含まれ、矢印図で 3 行目の後も y が元のリストに束縛されていることを示し、説明の中で「代入はオブジェクトを上書きするのではなく名前を付け替える」と述べていること。ログには必須/任意の区別と、AI 支援を使っていないことを明記すること。

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

      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 分

      小さな差分:レポートをより安全にする

      Agent 支援エンジニアリングチェック:Agent に与えた権限と自分のレビュー範囲を宣言すること。Agent の出力は独立した習得の証拠にはなりません。

      前提条件

      Day 04 のアクティビティ 1~2 を完了していること。Git がインストールされ user.name と user.email が設定済みであること。指示を出せる AI コーディング Agent があること。

      学習目標

      Agent に小さくレビュー可能な変更を 1 つだけ行わせ、あいまいなテキストラベルを repr/型のレポートに置き換え、差分を自分で確認してその変更だけをコミットできる。

      手順

      必須課題:誤解を招く元のレポートを含む練習用リポジトリを作成します。

      git init report-demo && cd report-demo
      printf 'count = "0"\nprint("count=" + count)\n' > report.py
      git add report.py && git commit -m "Add count report"
      python3 report.py

      このプログラムは count=0 と表示しますが、count が数値の 0 ではなくテキストの "0" であることが隠れています。元の report.py は次のとおりです。

      count = "0"
      print("count=" + count)

      Agent に、report.py の print 行だけを変更して count の repr と型を表示するよう依頼してください。与えた権限(例:report.py の編集のみ、コミットは不可)を宣言します。何かを実行する前に、新しい出力を予測してください。その後、レビューとコミットは自分で行います。

      git status --short
      git diff -- report.py
      git diff --check
      python3 report.py
      git add report.py
      git commit -m "Show repr and type in count report"
      git status --short

      git status に report.py 以外のファイル(例:?? notes.txt)が表示された場合、それは無関係な編集です。ステージせず、コミット前に削除または元に戻してください。

      任意課題:必須の証拠がそろった後でのみ、bool(count) も表示するよう Agent に依頼し、その 2 つ目の差分も同じ手順でレビューします。

      演習と予測記録

      次の report.py から始めます。

      count = "0"
      print("count=" + count)

      Agent に print 行を変更させ、出力が count='0' type=str となるようにしてください。新しい出力の予測、レビューした git status --short と git diff -- report.py の出力、git diff --check の結果、作成したコミットを記録します。Agent が作成した無関係なファイルはすべて却下してください。

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

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

      申告補助条件

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

      1.

      Agent の編集をコミットする前に、git status --short が M report.py と ?? notes.txt を表示しました。notes.txt は依頼していません。安全な次の手順はどれですか?

      解答根拠と履歴

        アクティビティの習得基準

        ログに、自分の予測、print 行だけが変わったことを示すレビュー済みの git diff、git diff --check の結果、観測した出力 count='0' type=str、report.py だけを含むコミット、Agent に与えた権限の宣言が含まれていること。ログには必須/任意の区別と、この作業が Agent 支援であることを明記すること。

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

        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 分

        復習と独立チェック

        独立習得チェック(AI 支援なし)。

        前提条件

        Day 04 のアクティビティ 1~3 を完了していること。

        学習目標

        AI の助けを一切借りずに、値と束縛に関する 3 つの短いスニペットの出力を予測し、実行して確かめ、食い違いの根本原因を説明できる。

        手順

        必須課題:AI を使わず、どれかを実行する前に、下の 3 つのスニペットの出力をすべて予測して書き出してください。その後、各スニペットを実行し(例:a.py、b.py、c.py として保存)、正確な出力を記録して、各行に「一致」か「不一致」の印を付けます。不一致を 1 つ選んで根本原因を説明してください。すべて一致した場合は、最も難しかったスニペットを説明します。

        スニペット A:

        print(repr(None), repr("None"), None == "None")

        スニペット B:

        a = "draft"
        b = a
        a = a + "!"
        print(a, b)

        スニペット C:

        items = ["draft"]
        alias = items
        items = items + ["final"]
        print(alias, items)
        print(alias is items)

        任意課題:必須の証拠がそろった後でのみ、どれか 1 つのスニペットの入力を 1 か所変え(例:スニペット B の "!" を "?" にする)、予測してから再実行します。

        演習と予測記録

        次の 3 つのスニペットを予測してから実行し、予測と正確な出力を並べて記録してください。

        スニペット A:

        print(repr(None), repr("None"), None == "None")

        スニペット B:

        a = "draft"
        b = a
        a = a + "!"
        print(a, b)

        スニペット C:

        items = ["draft"]
        alias = items
        items = items + ["final"]
        print(alias, items)
        print(alias is items)

        不一致 1 つ(またはいちばん難しかったスニペット)を、値と束縛の観点から説明してください。

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

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

        申告補助条件

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

        1.

        n = 5; m = n; n = n + 1; print(m, n) は何を出力しますか?

        解答根拠と履歴

          アクティビティの習得基準

          ログに、実行前に書いた予測、上記のとおりの 3 つのスニペットの正確な観測出力、そして不一致 1 つ(またはいちばん難しかったスニペット)についての値と束縛の観点からの正しい根本原因の説明が含まれていること。ログには必須/任意の区別と、AI 支援を使っていないことを明記すること。

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

          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]

          商用提供の分かりやすい解説です。同じ変更確認の習慣について、書籍の章のほうがステージングとインデックスの意味を詳しく説明しています。