06 / 90

Day 06: 真偽値とテキスト/データの分岐

通常・空・紛らわしいテキスト/データ入力を扱う分岐を作ってテストし、安全な Git の diff とコミットで証拠を残します。

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

実データ入力の真偽値表

独立習得確認(AI 支援なし)。

前提条件

Day 05 の比較チェックを完了していること。python3 で Python ファイルを実行し、その出力を読めること。

学習目標

空・ゼロ・空白の入力に対する bool() の結果を予測して検証し、`if value:` という分岐が実データを誤判定しうる理由を説明する。

手順

必須課題:何も実行する前に、[]、[0]、""、" "、0、"0" のそれぞれについて、bool(value) と分岐 presence(value)(真なら "present"、偽なら "missing")の結果の予測を書き出してください。その後プログラムを実行し、出力を正確にコピーして、予測と食い違った行すべてに印を付けます。

振り返り:食い違いごとに、規則を 1 文で書きます。空のコンテナと数値のゼロは偽、" " や "0" を含む空でない文字列はすべて真です。

任意課題:必須の証拠がそろった後に限り、None と [[]] をリストに追加し、先に予測してから実行してください。

演習と予測記録

truthiness.py を作成し、presence(value)(value が真なら "present"、それ以外は "missing" を返す)を定義してください。[]、[0]、""、" "、0、"0" の順に、各値の repr(value)、bool(value)、presence(value) を 1 行に出力します。

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

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

申告補助条件

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

1.

真偽値表の中で、目に見えるデータを持たないのに真であり、presence(value) が "present" と報告する入力はどれですか?

解答根拠と履歴

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

    AI 支援なしで、6 つの入力すべての予測を実行前に記録し、取得した出力が参考解答と完全に一致し、紛らわしい 2 行(`" "` が present、`0` が missing)を正しく説明できること。必須課題と任意課題を区別し、証拠には独立条件での取り組みであることを明記すること。

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

    linking PSF License Version 2

    Python Standard Library: Built-in Types

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

    該当セクション・タイムスタンプ: 「真理値判定」「比較」「ミュータブルなシーケンス型」の各節

    検証バージョンと日付: Python 3.12 ドキュメント(確認日: 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 ↗

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

    検証バージョンと日付: 確認日: 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 支援なし)。

    前提条件

    Activity 01 の真偽値表を完了していること。`str.strip()` と `int()` の動作を知っていること。

    学習目標

    テキストを一度だけ正規化し、検証済みの数字テキストだけを変換する厳密な仕様に従って classify(raw) を実装し、missing・zero・positive・invalid を取り違えないようにする。

    手順

    必須課題:演習の仕様を読んでください。コードを実行する前に、参考表にある 16 個の入力それぞれについて期待する戻り値を書きます(最低限 " 7 "、""、"0"、"unknown")。classify(raw) を実装してすべての入力で実行し、出力を正確に記録して、予測と 1 行ずつ比較します。

    振り返り:食い違いごとに破った仕様の規則を特定し、コードを直して、出力が完全に一致するまで再実行します。

    任意課題:必須の証拠がそろった後に限り、自分で考えた入力(例:アラビア・インド数字の 3 である "٣")を追加し、仕様から結果を予測してから実行してください。

    演習と予測記録

    次の仕様に厳密に従う classify(raw) を書いてください。
    - 入力:raw は常に str です。それ以外の型は仕様の対象外です(例:classify(None) は AttributeError を送出します)。
    - 正規化は一度だけ:text = raw.strip()。前後のあらゆる空白(スペース、タブ、改行、全角スペース U+3000)を取り除きます。内部の空白は残ります。
    - text == "" なら "missing" を返します。
    - text が ASCII 数字 0-9 だけで構成されている場合(text.isascii() and text.isdigit())、int(text) で変換し、数値が 0 なら "zero"(したがって "00" は zero)、それ以外は "positive"(したがって "007" は positive)を返します。
    - それ以外はすべて "invalid" を返します:大文字・小文字を問わない英字("unknown"、"Zero")、符号("-3"、"+7")、小数点("3.5")、アンダースコア("1_000")、内部の空白("1 2")、ASCII 以外の数字("7")。invalid なテキストを 0 として扱うことは決してありません。
    - 戻り値は小文字の 4 つの文字列 "missing"、"zero"、"positive"、"invalid" のいずれか 1 つです。
    入力ごとに f"{raw!r:12} -> {classify(raw)}" の形式で 1 行出力し、出力を安定させ、空白が見えるようにします。
    予測して実行する 16 個の入力(この順序で。"\t\n" はタブと改行、"\u30007" は全角スペース U+3000 の後に 7):" 7 ", "", "0", "unknown", " ", "\t\n", "\u30007", "007", "00", "Zero", "-3", "+7", "3.5", "1_000", "1 2", "7"。

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

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

    申告補助条件

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

    1.

    Day 06 の仕様で、classify(" 0\t") は何を返しますか?

    解答根拠と履歴

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

      AI 支援なしで、16 個の入力の予測を実行前に記録し、classify の出力が参考表と完全に一致し、変換規則を 1 文で説明できること。必須課題と任意課題を区別し、証拠には独立条件での取り組みであることを明記すること。

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

      linking PSF License Version 2

      Python Standard Library: Built-in Types

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

      該当セクション・タイムスタンプ: 「真理値判定」「比較」「ミュータブルなシーケンス型」の各節

      検証バージョンと日付: Python 3.12 ドキュメント(確認日: 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 ↗

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

      検証バージョンと日付: 確認日: 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 分

      安全な diff とコミットのリハーサル

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

      前提条件

      Activity 02 の仕様と参考実装 classify を完了していること。ターミナルで Git と python3 が使えること。読み取り専用で範囲を限定したレビュー依頼を出せる AI コーディングエージェントがあること。

      学習目標

      エージェントに依頼する前に期待出力を書き、使い捨ての Git リポジトリで修正案をレビューする。期待出力に対してテストし、git diff --check で diff を確認し、レビューしたファイルだけをコミットする。

      手順

      必須課題:mktemp -d で作った新しい使い捨てリポジトリだけで作業し、実際のプロジェクトでは行わないでください。(1) エージェントに依頼する前に、6 つの入力に対する自分の期待出力を expected.txt に書きます。(2) バグのあるベースライン classify.py をコミットして実行し、diff で食い違いを記録します。(3) 次のような範囲を限定したレビューをエージェントに依頼します:「classify.py だけを下記の仕様と照らしてレビューしてください。コマンドの実行、ファイルの編集、コミットはしないでください。置き換え案を示し、6 つの入力のうち結果が変わるものを挙げてください。」エージェント名、付与した権限(読み取り専用、1 ファイル)、その回答を記録します。(4) 置き換え案を適用し、git diff を確認し、ケースを再実行し、git diff --check を実行してから、classify.py だけをコミットします。参考解答には、Activity 02 の実装を修正案として使う、完全に再現可能な手順を示しています。

      振り返り:各コマンドの前に予測を書き、出力を正確に記録し、期待出力と実際の出力の違いをすべて説明します。

      任意課題:必須の証拠がそろった後に限り、コミット済みの classify.py のある行の末尾に空白を追加して git diff --check の報告を観察し、git restore classify.py で元に戻してください。

      演習と予測記録

      使い捨てリポジトリで、Activity 02 の仕様に基づく " 7 "、""、"0"、"unknown"、" "、" 0 " の期待出力を記録してください(出力形式は f"{raw!r} -> {classify(raw)}")。ベースラインをコミットし、エージェントが提案した修正を git diff でレビューし、diff expected.txt actual.txt と git diff --check で検証してから、classify.py だけをコミットします。expected.txt と actual.txt は未追跡のまま残します。

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

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

      申告補助条件

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

      1.

      出力は expected.txt と一致し、git diff --check は何も出力しません。git status --short には M classify.py、?? actual.txt、?? expected.txt が表示されています。レビューしたファイルだけをステージするコマンドはどれですか?

      解答根拠と履歴

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

        expected.txt がエージェントへの依頼より前に書かれていること。証拠に、ベースラインの食い違い、確認した diff、`diff exit: 0`、`check exit: 0`、そして expected.txt と actual.txt を未追跡のまま classify.py だけを含むコミットが示されていること。エージェントへの依頼、付与した権限(読み取り専用、1 ファイル)、回答が記録され、独立した証拠ではなく Agent 支援として明記されていること。必須課題と任意課題を区別すること。

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

        linking PSF License Version 2

        Python Standard Library: Built-in Types

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

        該当セクション・タイムスタンプ: 「真理値判定」「比較」「ミュータブルなシーケンス型」の各節

        検証バージョンと日付: Python 3.12 ドキュメント(確認日: 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 ↗

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

        検証バージョンと日付: 確認日: 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 分

        3 日間の復習:独力でのエッジケース関数

        独立習得確認(AI 支援なし)。

        前提条件

        Activity 01-03 を完了していること。説明に使う Day 04 と Day 05 のノートが手元にあること。

        学習目標

        AI なしで、空文字列・"0"・未知のテキストを扱う分岐を実装してテストし、Day 04-06 で驚いた Python の挙動を 1 つ説明し、1 ファイルだけの安全なコミットを記録する。

        手順

        必須課題:AI を使わずに、コードを書く前に 4 つの受け入れケース(""、"0"、"unknown"、" 12 ")とその正確な期待メッセージを書きます。すべてのケースが assert を通るように quantity_message(raw) を実装し、使い捨てリポジトリで quantity.py だけをコミットし、Day 04-06 で驚いた結果を 1 つ短く説明します。

        振り返り:実行前に出力を予測し、期待メッセージと文字どおりに比較し、違いがあれば説明します。

        任意課題:必須の証拠がそろった後に限り、同じ規則と同じ 4 ケースを保ったまま、4 つのメッセージを別の言語に翻訳してください。

        演習と予測記録

        quantity_message(raw)(raw は str)を、次の正確なメッセージで実装してください:空または空白だけのテキスト → missing: enter a whole number、0 に等しい ASCII 数字テキスト → zero: nothing to order、その他の ASCII 数字テキスト → ok: <数値>、それ以外 → invalid: <strip 後のテキストの repr> is not a whole number。""、"0"、"unknown"、" 12 " を assert でテストし、使い捨てリポジトリで quantity.py だけをコミットし、Day 04-06 で驚いた結果を 2-3 文で説明します。

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

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

        申告補助条件

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

        1.

        数量が未入力であることを検出するのに、分岐 if raw: だけでは不十分なのはなぜですか?

        解答根拠と履歴

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

          AI 支援なしで、4 つの受け入れケースすべてが正確なメッセージで通り、真偽値と明示的な比較の違いを正しく説明でき、コミットには quantity.py だけが含まれ、diff チェックがクリーンで、その後の `git status --short` の出力が空であること。必須課題と任意課題を区別し、証拠には独立条件での取り組みであることを明記すること。

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

          linking PSF License Version 2

          Python Standard Library: Built-in Types

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

          該当セクション・タイムスタンプ: 「真理値判定」「比較」「ミュータブルなシーケンス型」の各節

          検証バージョンと日付: Python 3.12 ドキュメント(確認日: 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 ↗

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

          検証バージョンと日付: 確認日: 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]

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