# 第一週操作手冊：家用 MacBook Neo／公司 Windows

網址：https://fde.chiba.tw/week01.html

畫面為教學示意；版本與帳號不同屬正常。公司安裝政策由 IT 確認。

操作環境：家裡 MacBook Neo · 終端機

## 01｜打開終端機，知道自己在哪裡

先學會在電腦裡找到工作位置。你可以把終端機想成用文字操作的窗口。

1. 按 Command（⌘）＋空白鍵，搜尋「終端機」或 Terminal，按 Enter 開啟。
2. 在新窗口貼上下面的 pwd，按 Enter。pwd 的意思是顯示目前位置。
3. 只複製指令區；示意畫面中的 % 是提示符號，不要一起貼。

貼到 Mac 終端機：

```sh
pwd
```

預期畫面（示意）：

```text
/Users/你的帳號
你的帳號@Mac ~ %
```

第一行是資料夾路徑，最後再次出現提示符號，代表電腦已經等你輸入下一個指令。姓名與符號不同都正常。

驗收：
- 能自己開啟終端機。
- pwd 顯示以 /Users/ 開頭的個人路徑，並能說出「這是目前位置」。

卡關提示：貼上文字後沒有結果：確認按了 Enter，而且焦點在終端機窗口。若正在 Claude 裡，輸入 /exit 回到終端機再試。

操作環境：公司 Windows · PowerShell

## 01｜打開 PowerShell，知道自己在哪裡

先學會在電腦裡找到工作位置。你可以把終端機想成用文字操作的窗口。

1. 從開始選單搜尋 PowerShell，開啟一般窗口，不用以系統管理員身分啟動。
2. 確認提示符號開頭是 PS。若只有 C:\... 而沒有 PS，可能是 CMD，請重新開 PowerShell。
3. 貼上 Get-Location 並按 Enter。只複製指令區，不複製示意的 PS 提示符號。

貼到 Windows PowerShell：

```sh
Get-Location
```

預期畫面（示意）：

```text
Path
----
C:\Users\你的帳號
PS C:\Users\你的帳號>
```

Path 是目前位置。PS 開頭告訴你這是 PowerShell，這份 Windows 教學所有指令都在這裡操作。

驗收：
- 能開啟 PowerShell，一般權限即可。
- Get-Location 顯示個人路徑，能說出目前位置。

卡關提示：貼上文字後沒有結果：確認按了 Enter，而且焦點在PowerShell 窗口。若正在 Claude 裡，輸入 /exit 回到終端機再試。

操作環境：家裡 MacBook Neo · 終端機

## 02｜確認 Git：程式的修訂紀錄工具

Git 幫你保存修改紀錄。今天先確認它能使用，不用背完所有操作。

1. 先執行 git --version。已有 Git 就直接往下一步。
2. 若 Mac 出現安裝開發工具的對話框，先讓導師或 IT 確認，再依系統畫面完成。
3. 沒有 Git 時，可使用下方 Apple 安裝指令；下載可能需要等待，完成後重開終端機再查版本。

貼到 Mac 終端機：

```sh
git --version
```

預期畫面（示意）：

```text
git version 2.x.x (Apple Git-...)
你的帳號@Mac ~ %
```

看見 git version 加上版本號，就完成這一步；版本不用與示意相同。

驗收：
- git --version 能顯示版本號。
- 能說出 Git 是用來保存程式版本，不是用來執行 Python。

卡關提示：若出現「already installed」，代表工具已安裝，重跑 git --version。若公司禁止安裝或系統持續報錯，停止並交給 IT，不改系統設定。

只有 Git 尚未可用，且導師確認後執行：

```sh
xcode-select --install
```

操作環境：公司 Windows · PowerShell

## 02｜確認 Git：程式的修訂紀錄工具

Git 幫你保存修改紀錄。今天先確認它能使用，不用背完所有操作。

1. 先執行 git --version。已有 Git 就往下一步。
2. 如果沒有 Git，讓 IT 從 Git 官方 Windows 頁面安裝 Git for Windows。公司允許使用 winget 時可由導師陪同執行下方指令。
3. 安裝完成後關閉並重新開 PowerShell，再確認版本。Git Bash 是 Claude 可能使用的工具；你仍照本手冊在 PowerShell 操作。

貼到 Windows PowerShell：

```sh
git --version
```

預期畫面（示意）：

```text
git version 2.x.x.windows.x
PS C:\Users\你的帳號>
```

看見 git version 加上版本號，就完成這一步；版本不用與示意相同。

驗收：
- git --version 能顯示版本號。
- 能說出 Git 是用來保存程式版本，不是用來執行 Python。

卡關提示：git 無法辨識：安裝後重開 PowerShell。winget 不存在、安裝需管理員或遭公司政策封鎖時交給 IT，不繞過政策。

IT／導師確認後，才執行安裝：

```sh
winget install --id Git.Git -e --source winget
```

操作環境：家裡 MacBook Neo · 終端機

## 03｜確認 Python，印出第一句話

Python 是這週程式的執行工具。Claude 寫好程式後，你會用它來跑。

1. 先查 python3 --version。本課程使用 Python 3.11 或以上。
2. 若沒有 Python，或版本低於 3.11，讓導師協助從 python.org 的 macOS 頁面下載官方 installer（.pkg）。依公司規定安裝，完成後重開終端機。
3. 版本確認後，再跑印出 Hello, FDE 的指令。引號和括號都照貼。

貼到 Mac 終端機：

```sh
python3 --version
```

貼到 Mac 終端機：

```sh
python3 -c "print('Hello, FDE')"
```

預期畫面（示意）：

```text
Python 3.12.x
Hello, FDE
你的帳號@Mac ~ %
```

第一個指令顯示 Python 版本；第二個指令印出一句文字。這是你第一次讓電腦照程式做事。

驗收：
- 版本為 3.11 或以上。
- 第二個指令印出 Hello, FDE，沒有錯誤訊息。

卡關提示：安裝後仍是舊版本：請導師檢查 PATH（電腦尋找程式的位置）。不要刪除或替換 Mac 內建 Python。安裝受限時交給 IT。

操作環境：公司 Windows · PowerShell

## 03｜確認 Python，印出第一句話

Python 是這週程式的執行工具。Claude 寫好程式後，你會用它來跑。

1. 執行 py -3 --version。本課程使用 Python 3.11 或以上。
2. 若沒有 Python 或 py，請 IT 從 Python 官方 Windows 安裝頁準備核准版本與啟動器，並確認 py -3 可以執行。可能是新版安裝管理器或既有啟動器。
3. 安裝完成後重開 PowerShell，再試印出 Hello, FDE。這一步還沒建立專案虛擬環境。

貼到 Windows PowerShell：

```sh
py -3 --version
```

貼到 Windows PowerShell：

```sh
py -3 -c "print('Hello, FDE')"
```

預期畫面（示意）：

```text
Python 3.13.x
Hello, FDE
PS C:\Users\你的帳號>
```

第一個指令顯示 Python 版本；第二個指令印出一句文字。這是你第一次讓電腦照程式做事。

驗收：
- 版本為 3.11 或以上。
- 第二個指令印出 Hello, FDE，沒有錯誤訊息。

卡關提示：py 未辨識或轉到商店：請 IT 確認 Python 執行環境與啟動器。不要自己停用公司管理政策。py 指令若要下載新執行環境，先讓導師確認。

操作環境：家裡 MacBook Neo · 終端機

## 04｜安裝並確認 Claude Code

這裡安裝的是終端機中的 Claude Code。已有可用版本，就跳過安裝。

1. 先試 claude --version。若出現版本號，直接去步驟 05。
2. 若尚未安裝，導師確認後執行官方安裝指令。curl 下載官方安裝器，| 把它交給 bash 執行。
3. 安裝時可能暫時沒有進度文字。完成後開新終端機，再執行 export PATH 與 claude --version。

貼到 Mac 終端機：

```sh
claude --version
```

尚未安裝時：公司允許後執行：

```sh
curl -fsSL https://claude.ai/install.sh | bash
```

安裝後，在新終端機確認：

```sh
export PATH="$HOME/.local/bin:$PATH"
claude --version
```

預期畫面（示意）：

```text
2.x.x (Claude Code)
你的帳號@Mac ~ %
```

看見版本號與 Claude Code 字樣就成功。這個原生安裝方式不需要另外安裝 Node.js；PATH 指令只影響現在這個窗口。

驗收：
- claude --version 顯示版本。
- 知道安裝工具與登入帳號是不同步驟；登入會在步驟 08 完成。

卡關提示：command not found：先使用這步的 export PATH，再試版本。403、網路封鎖或安裝器錯誤：記下錯誤給 IT；不要切換到自行購買的 API 帳號。

操作環境：公司 Windows · PowerShell

## 04｜安裝並確認 Claude Code

這裡安裝的是終端機中的 Claude Code。已有可用版本，就跳過安裝。

1. 先執行 claude --version。已有可用版本，就跳過安裝。
2. 尚未安裝時，導師／IT 確認後，使用官方 PowerShell 安裝器。irm 取得安裝腳本，iex 執行它。
3. 安裝完成後重開 PowerShell，再查版本。若 PATH 尚未找到，可使用這一步的臨時 PATH 設定。

先確認版本：

```sh
claude --version
```

公司允許後，貼到 Windows PowerShell：

```sh
irm https://claude.ai/install.ps1 | iex
```

需要時，在新 PowerShell 確認路徑：

```sh
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
claude --version
```

預期畫面（示意）：

```text
2.x.x (Claude Code)
PS C:\Users\你的帳號>
```

看見版本號就成功。這個原生安裝方式不用另外裝 Node.js。PATH 設定只影響目前窗口，不修改公司全域環境。

驗收：
- claude --version 顯示版本。
- 知道安裝工具與登入帳號是不同步驟；登入會在步驟 08 完成。

卡關提示：公司阻擋腳本／下載、出現 403 或需要額外權限：交給 IT，不使用 ExecutionPolicy Bypass、不自行改全域政策。版本仍未辨識時附上錯誤給導師。

操作環境：家裡 MacBook Neo · 終端機

## 05｜下載練習包，進入專案資料夾

這是一個專門練習的小資料夾，裡面已放好合成資料與驗收工具。

1. 依序執行下面各行。mkdir 建立資料夾，cd 進入資料夾，curl 下載練習包，unzip 解壓縮。
2. unzip -n 會保留已存在的同名檔案；重做時不覆寫之前成果。這一步不要在其他公司專案裡操作。
3. 最後 pwd 核對位置，ls 看看裡面的檔案。

貼到 Mac 終端機：

```sh
mkdir -p "$HOME/Developer"
cd "$HOME/Developer"
curl -fL https://fde.chiba.tw/downloads/week01-starter.zip -o week01-starter.zip
unzip -n week01-starter.zip
cd "$HOME/Developer/fde-week01"
pwd
ls
```

預期畫面（示意）：

```text
/Users/你的帳號/Developer/fde-week01
CLAUDE.md  START-HERE.md  check_week01.py  data
```

路徑結尾必須是 /Developer/fde-week01。data 是資料夾，check_week01.py 是驗收工具。隱藏的 .gitignore 用 ls -a 才看得到。

驗收：
- pwd 的結尾正確。
- ls 看得到 data、check_week01.py、CLAUDE.md。
- 此時尚未有 csv_stats.py，因為那是你要請 Claude 實作的作業。

卡關提示：curl 失敗：先檢查網站網址與網路。也可點頁面的下載練習包按鈕，讓導師協助放到 Developer；若目錄內容與示意不符，先核對 pwd，不要繼續。

操作環境：公司 Windows · PowerShell

## 05｜下載練習包，進入專案資料夾

這是一個專門練習的小資料夾，裡面已放好合成資料與驗收工具。

1. 依序在 PowerShell 執行。New-Item 建資料夾，Set-Location 進入，Invoke-WebRequest 下載，Expand-Archive 解壓縮。
2. if 那一行只在練習資料夾尚不存在時解壓縮，重做時保留原成果。
3. Get-Location 核對路徑，Get-ChildItem 查看檔案。

貼到 Windows PowerShell：

```sh
New-Item -ItemType Directory -Force -Path "$HOME\Developer" | Out-Null
Set-Location "$HOME\Developer"
Invoke-WebRequest -Uri "https://fde.chiba.tw/downloads/week01-starter.zip" -OutFile week01-starter.zip
if (-not (Test-Path "$HOME\Developer\fde-week01")) { Expand-Archive -Path week01-starter.zip -DestinationPath "$HOME\Developer" }
Set-Location "$HOME\Developer\fde-week01"
Get-Location
Get-ChildItem
```

預期畫面（示意）：

```text
Path
----
C:\Users\你的帳號\Developer\fde-week01

CLAUDE.md  START-HERE.md  check_week01.py  data
```

路徑結尾要是 Developer\fde-week01。隱藏檔 .gitignore 可用 Get-ChildItem -Force 查看；此時還沒有作業程式。

驗收：
- 目前位置是 Developer\fde-week01。
- 看得到 data、check_week01.py 與 CLAUDE.md。
- 還沒有 csv_stats.py，等你請 Claude 實作。

卡關提示：下載失敗時先檢查網址與網路，或用頁面下載按鈕取得 ZIP 並請導師協助放到 Developer。若目錄內容不符，先 Get-Location 核對位置；不覆寫原成果。

操作環境：家裡 MacBook Neo · 終端機

## 06｜建立這個專案專用的 Python 環境

虛擬環境像專案自己的工具箱，讓不同專案的工具各自放好。

1. 確認仍在 fde-week01 資料夾，依序建立並啟用 .venv。
2. source 是讓目前窗口使用這個環境。新開窗口時要重新啟用。
3. 第一週只用 Python 內建模組，不需要 pip 安裝任何套件。

貼到 Mac 終端機：

```sh
python3 -m venv .venv
source .venv/bin/activate
python3 -c "import sys; print(sys.executable)"
```

預期畫面（示意）：

```text
/Users/你的帳號/Developer/fde-week01/.venv/bin/python3
(.venv) 你的帳號@Mac fde-week01 %
```

最後的程式路徑含 /.venv/bin/ 就成功。提示符號通常會出現 (.venv)，但以實際程式路徑確認較可靠。

驗收：
- Python 執行檔路徑包含 fde-week01/.venv/bin/。
- 能說出新窗口要重新 source，這是啟用而不是重新安裝。

卡關提示：No such file：先確認 pwd。如果建立 .venv 時失敗，核對 Python 版本並交給導師，不改其他專案環境。

操作環境：公司 Windows · PowerShell

## 06｜建立這個專案專用的 Python 環境

虛擬環境像專案自己的工具箱，讓不同專案的工具各自放好。

1. 確認目前在 fde-week01，使用 py -3 建立 .venv。
2. 這份 Windows 教學直接執行虛擬環境裡的 python.exe，不需要執行 Activate.ps1。
3. 因此不需要修改 PowerShell 腳本執行政策；之後每個作業指令都使用相同路徑。

貼到 Windows PowerShell：

```sh
py -3 -m venv .venv
.\.venv\Scripts\python.exe -c "import sys; print(sys.executable)"
```

預期畫面（示意）：

```text
C:\Users\你的帳號\Developer\fde-week01\.venv\Scripts\python.exe
PS C:\Users\你的帳號\Developer\fde-week01>
```

路徑含 .venv\Scripts\python.exe 就成功。提示符號不用出現 (.venv)，因為我們直接指定工具箱裡的執行檔。

驗收：
- 輸出是本專案 .venv\Scripts\python.exe。
- 知道後續用這個執行檔，不依賴環境啟用脚本。

卡關提示：py 找不到：回步驟 03 請 IT 確認。找不到 python.exe：核對資料夾位置及建立 .venv 的錯誤。不要為這一步更改執行政策。

操作環境：家裡 MacBook Neo · 終端機

## 07｜建立本機修訂紀錄

先替這個練習建立 Git 紀錄。這週只存在自己的 Mac，不上傳。

1. 依序執行。--local 只設定目前的練習專案，不改公司其他專案的設定。
2. FDE Learner 與 example.invalid 是教學用身分，僅供本機練習；實際工作以公司規定為準。
3. git status 顯示新檔案尚未保存，是正常狀態。

貼到 Mac 終端機：

```sh
git init
git config --local user.name "FDE Learner"
git config --local user.email "fde-learner@example.invalid"
git status
```

預期畫面（示意）：

```text
Initialized empty Git repository in .../fde-week01/.git/
No commits yet
Untracked files:
  .gitignore
  CLAUDE.md
  START-HERE.md
  check_week01.py
  data/
```

Untracked 表示檔案還沒放進版本紀錄，不是錯誤。分支名稱可能是 main 或 master，這週都可以。

驗收：
- git status 可執行。
- 能指出目前還沒有 commit。
- 知道本週沒有 push，也沒有連到公司正式程式庫。

卡關提示：not a git repository：核對 pwd 再執行 git init。若出現與公司管理政策相關的警告，交給導師處理。

操作環境：公司 Windows · PowerShell

## 07｜建立本機修訂紀錄

先替這個練習建立 Git 紀錄。這週只存在目前電腦，不上傳。

1. 依序執行。--local 只設定目前的練習專案，不改公司其他專案的設定。
2. FDE Learner 與 example.invalid 是教學用身分，僅供本機練習；實際工作以公司規定為準。
3. git status 顯示新檔案尚未保存，是正常狀態。

貼到 Windows PowerShell：

```sh
git init
git config --local user.name "FDE Learner"
git config --local user.email "fde-learner@example.invalid"
git status
```

預期畫面（示意）：

```text
Initialized empty Git repository in .../fde-week01/.git/
No commits yet
Untracked files:
  .gitignore
  CLAUDE.md
  START-HERE.md
  check_week01.py
  data/
```

Untracked 表示檔案還沒放進版本紀錄，不是錯誤。分支名稱可能是 main 或 master，這週都可以。

驗收：
- git status 可執行。
- 能指出目前還沒有 commit。
- 知道本週沒有 push，也沒有連到公司正式程式庫。

卡關提示：not a git repository：核對 Get-Location 再執行 git init。若出現與公司管理政策相關的警告，交給導師處理。

操作環境：家裡 MacBook Neo · 終端機

## 08｜啟動 Claude，使用公司帳號登入

先用規劃模式，讓 Claude 看專案與說明，不急著改檔案。

1. 在目前專案執行下面指令。第一次可能詢問信任目前目錄，先確認顯示的是 fde-week01。
2. 依登入畫面使用公司核准的 Claude 訂閱／Team 帳號。瀏覽器開啟後完成登入，回到終端機。
3. 看到可輸入對話的 Claude 畫面，才貼下一步的任務；介面標示 plan／規劃模式時，先停留在此模式。

貼到 Mac 終端機：

```sh
claude --permission-mode plan
```

預期畫面（示意）：

```text
Claude Code
工作目錄：.../Developer/fde-week01
規劃模式 / plan mode

> 在這裡輸入你給 Claude 的任務
```

這是啟動後的操作示意，實際畫面會依版本變動。此時你是在 Claude 裡，輸入的是對話，不是普通終端機指令。

驗收：
- 登入的是公司核准帳號，能使用 Claude Code。
- 工作目錄是 fde-week01。
- 能分辨 Claude 對話輸入區與 Mac 終端機提示符號。

卡關提示：沒有使用資格、登入失敗、額度限制或被要求另付 API 費用：請管理員確認。不要把密碼、登入碼或 token 貼進對話；截圖交導師時遮住這些資訊。

操作環境：公司 Windows · PowerShell

## 08｜啟動 Claude，使用公司帳號登入

先用規劃模式，讓 Claude 看專案與說明，不急著改檔案。

1. 在目前專案執行下面指令。第一次可能詢問信任目前目錄，先確認顯示的是 fde-week01。
2. 依登入畫面使用公司核准的 Claude 訂閱／Team 帳號。瀏覽器開啟後完成登入，回到終端機。
3. 看到可輸入對話的 Claude 畫面，才貼下一步的任務；介面標示 plan／規劃模式時，先停留在此模式。

貼到 Windows PowerShell：

```sh
claude --permission-mode plan
```

預期畫面（示意）：

```text
Claude Code
工作目錄：C:\Users\你的帳號\Developer\fde-week01
規劃模式 / plan mode

> 在這裡輸入你給 Claude 的任務
```

這是啟動後的操作示意，實際畫面會依版本變動。此時你是在 Claude 裡，輸入的是對話，不是普通終端機指令。

驗收：
- 登入的是公司核准帳號，能使用 Claude Code。
- 工作目錄是 fde-week01。
- 能分辨 Claude 對話輸入區與 Windows PowerShell提示符號。

卡關提示：沒有使用資格、登入失敗、額度限制或被要求另付 API 費用：請管理員確認。不要把密碼、登入碼或 token 貼進對話；截圖交導師時遮住這些資訊。

操作環境：家裡 MacBook Neo · 終端機

## 09｜先請 Claude 解釋計畫

你熟悉需求與驗收。這一步把它們寫清楚，並讓 Claude 解釋資料如何流動。

1. 把下面整段貼進 Claude Code 對話區，送出。不要貼到 Mac 終端機。
2. 請它說明讀檔 → 取得欄位 → 統計 → 印出結果，並確認它只打算建立兩個檔案。
3. 不懂的地方就追問「請用讀試算表的例子解釋」。先不允許它修改驗收腳本或資料。
4. 若 Claude 詢問是否立刻實作，先選擇不執行／繼續規劃，保留計畫；下一步再發實作需求。選項名稱依版本不同，不清楚就請導師協助。

貼到 Claude Code：先規劃：

```text
請在目前的 fde-week01 練習專案實作第一週 CSV 統計工具。
我沒有工程經驗，請用白話解釋，先提計畫，暫時不要修改檔案。

先讀 CLAUDE.md 與資料檔。允許建立 csv_stats.py、README.md。
不要修改 check_week01.py、data/、.gitignore 或驗收標準。
只用 Python 內建 csv、sys、pathlib 等模組，不安裝套件。

使用方式：python3 csv_stats.py <CSV 路徑>
統計資料列（不含標題列）、欄位名稱及所有儲存格的空值總數。
空字串與只有空白的儲存格都算空值。
sample.csv 的三行輸出固定為：
資料筆數：3
欄位名稱：row_id, date, amount
空值總數：1

完全空檔：資料筆數：0／欄位名稱：無／空值總數：0，退出碼 0。
只有標題列：0 筆、保留三欄名稱、空值 0，退出碼 0。
找不到檔案：錯誤訊息含「找不到檔案」，退出碼 2。
支援加上引號的含空白路徑。

README 寫出啟動、三種主要情況、驗收及已知限制。
每項輸出各佔一行，請保持上述文字與標點。
請說明：要改哪些檔案、資料怎麼流動、如何驗收。
```

預期畫面（示意）：

```text
Claude 提出計畫（示意）
1. 讀取 CSV 標題與資料
2. 計算資料列及空值
3. 處理空檔和找不到檔案
4. 建立 csv_stats.py 與 README.md
5. 執行 check_week01.py 確認結果
```

你要看的不是計畫有多長，而是修改範圍、輸出與驗收是否符合任務。回答內容不必和示意逐字相同。

驗收：
- Claude 沒有更改 check_week01.py 或 data。
- 你能用自己的話說出四段資料流。
- 計畫只使用 Python 內建功能，沒有要求部署或裝新套件。

卡關提示：Claude 開始擴大需求：請它回到第一週範圍。對話太複雜時先把目前結論整理給導師，不繼續堆功能。

操作環境：公司 Windows · PowerShell

## 09｜先請 Claude 解釋計畫

你熟悉需求與驗收。這一步把它們寫清楚，並讓 Claude 解釋資料如何流動。

1. 把下面整段貼進 Claude Code 對話區，送出。不要貼到 Windows PowerShell。
2. 請它說明讀檔 → 取得欄位 → 統計 → 印出結果，並確認它只打算建立兩個檔案。
3. 不懂的地方就追問「請用讀試算表的例子解釋」。先不允許它修改驗收腳本或資料。
4. 若 Claude 詢問是否立刻實作，先選擇不執行／繼續規劃，保留計畫；下一步再發實作需求。選項名稱依版本不同，不清楚就請導師協助。

貼到 Claude Code：先規劃：

```text
請在目前的 fde-week01 練習專案實作第一週 CSV 統計工具。
我沒有工程經驗，請用白話解釋，先提計畫，暫時不要修改檔案。

先讀 CLAUDE.md 與資料檔。允許建立 csv_stats.py、README.md。
不要修改 check_week01.py、data/、.gitignore 或驗收標準。
只用 Python 內建 csv、sys、pathlib 等模組，不安裝套件。

使用方式：.\.venv\Scripts\python.exe csv_stats.py <CSV 路徑>
統計資料列（不含標題列）、欄位名稱及所有儲存格的空值總數。
空字串與只有空白的儲存格都算空值。
sample.csv 的三行輸出固定為：
資料筆數：3
欄位名稱：row_id, date, amount
空值總數：1

完全空檔：資料筆數：0／欄位名稱：無／空值總數：0，退出碼 0。
只有標題列：0 筆、保留三欄名稱、空值 0，退出碼 0。
找不到檔案：錯誤訊息含「找不到檔案」，退出碼 2。
支援加上引號的含空白路徑。

README 寫出啟動、三種主要情況、驗收及已知限制。
每項輸出各佔一行，請保持上述文字與標點。
請說明：要改哪些檔案、資料怎麼流動、如何驗收。
我在 Windows PowerShell，請使用專案的 .venv\Scripts\python.exe；如果工具是 Bash，請使用等價路徑。
```

預期畫面（示意）：

```text
Claude 提出計畫（示意）
1. 讀取 CSV 標題與資料
2. 計算資料列及空值
3. 處理空檔和找不到檔案
4. 建立 csv_stats.py 與 README.md
5. 執行 check_week01.py 確認結果
```

你要看的不是計畫有多長，而是修改範圍、輸出與驗收是否符合任務。回答內容不必和示意逐字相同。

驗收：
- Claude 沒有更改 check_week01.py 或 data。
- 你能用自己的話說出四段資料流。
- 計畫只使用 Python 內建功能，沒有要求部署或裝新套件。

卡關提示：Claude 開始擴大需求：請它回到第一週範圍。對話太複雜時先把目前結論整理給導師，不繼續堆功能。

操作環境：家裡 MacBook Neo · 終端機

## 10｜允許實作，建立第一個程式

現在把已確認的計畫交給 Claude 實作。每次權限提示都先看它要做什麼。

1. 先保留剛才的計畫，再依畫面切換到需要手動確認變更的一般互動模式。Shift＋Tab 可切換模式；不要選自動接受編輯或跳過權限。若已開始實作，先確認範圍，再補送下方完整要求。
2. 貼下方對話。允許的範圍是本專案兩個新檔案，以及執行本週驗收。
3. 如果提示要碰別的專案、帳號設定或雲端，停止並找導師。Claude 回覆完成後，你仍要自己操作驗收。

切到一般模式後，貼到 Claude Code：

```text
請照剛才確認的計畫實作 csv_stats.py 與 README.md。
不要修改驗收腳本、資料或規格，不安裝套件。
完成後執行 python3 check_week01.py，列出實際結果。
請指出讀檔、統計與輸出分別在哪裡，讓我能解釋。
```

預期畫面（示意）：

```text
Claude 申請權限（示意）
建立：csv_stats.py
建立：README.md
執行：python3 check_week01.py

你確認目標與指令後，再允許。
```

提示可能是寫入檔案或執行命令。先看檔名、路徑與命令用途；真正的結果會在下一步由你重跑。

驗收：
- 資料夾已有 csv_stats.py 與 README.md。
- CLAUDE.md、data 與驗收腳本保留原本內容。
- 能指出 Claude 實際修改了哪些檔案。

卡關提示：Claude 說測試失敗：先看失敗案例，再請它修正程式，不能放寬驗收。相同問題兩次修正仍失敗，整理給導師。

操作環境：公司 Windows · PowerShell

## 10｜允許實作，建立第一個程式

現在把已確認的計畫交給 Claude 實作。每次權限提示都先看它要做什麼。

1. 先保留剛才的計畫，再依畫面切換到需要手動確認變更的一般互動模式。Shift＋Tab 可切換模式；不要選自動接受編輯或跳過權限。若已開始實作，先確認範圍，再補送下方完整要求。
2. 貼下方對話。允許的範圍是本專案兩個新檔案，以及執行本週驗收。
3. 如果提示要碰別的專案、帳號設定或雲端，停止並找導師。Claude 回覆完成後，你仍要自己操作驗收。

切到一般模式後，貼到 Claude Code：

```text
請照剛才確認的計畫實作 csv_stats.py 與 README.md。
不要修改驗收腳本、資料或規格，不安裝套件。
完成後執行 .\.venv\Scripts\python.exe check_week01.py，列出實際結果。
請指出讀檔、統計與輸出分別在哪裡，讓我能解釋。
我用 Windows PowerShell。請用專案內的 Python；若你的執行工具是 Bash，使用 ./.venv/Scripts/python.exe 的等價路徑。README 請寫 PowerShell 指令。
```

預期畫面（示意）：

```text
Claude 申請權限（示意）
建立：csv_stats.py
建立：README.md
執行：.\.venv\Scripts\python.exe check_week01.py

先確認使用本專案的 Python，再允許。
```

先看檔名、路徑與命令用途。PowerShell 應使用 .venv\Scripts\python.exe；Claude 若使用 Bash 工具，等價路徑是 ./.venv/Scripts/python.exe。若只申請全域 python3，請它改用專案執行檔。

驗收：
- 資料夾已有 csv_stats.py 與 README.md。
- CLAUDE.md、data 與驗收腳本保留原本內容。
- 能指出 Claude 實際修改了哪些檔案。

卡關提示：Claude 說測試失敗：先看失敗案例，再請它修正程式，不能放寬驗收。相同問題兩次修正仍失敗，整理給導師。

操作環境：家裡 MacBook Neo · 終端機

## 11｜回到終端機，親自跑正常資料

Claude 的「完成」需要由你重跑確認。先確認這份固定資料的答案。

1. 在 Claude 對話區輸入 /exit，回到 Mac 終端機。
2. 先看 sample.csv。第一列是標題，下面三列才算資料；第三筆金額空白，所以空值總數是 1。
3. 再執行工具，核對三行結果。

先貼到 Claude Code，退出對話：

```text
/exit
```

貼到 Mac 終端機：

```sh
cat data/sample.csv
python3 csv_stats.py data/sample.csv
```

預期畫面（示意）：

```text
row_id,date,amount
1,2026-10-12,100
2,2026-10-12,200
3,2026-10-12,

資料筆數：3
欄位名稱：row_id, date, amount
空值總數：1
```

你可以直接用這三筆合成資料核對答案。標題列不能算成第四筆；空白的金額不能算成 0 元。

驗收：
- 輸出為 3 筆、三個指定欄位、1 個空值。
- 知道 cat 是查看檔案，python3 是執行程式。
- 能解釋為什麼空值總數是 1。

卡關提示：結果不符：把實際輸出與預期交給 Claude 修程式，不改 sample.csv。No such file 先查 pwd；若 .venv 未啟用，回步驟 06。

操作環境：公司 Windows · PowerShell

## 11｜回到終端機，親自跑正常資料

Claude 的「完成」需要由你重跑確認。先確認這份固定資料的答案。

1. 在 Claude 對話區輸入 /exit，回到 Windows PowerShell。
2. 先看 sample.csv。第一列是標題，下面三列才算資料；第三筆金額空白，所以空值總數是 1。
3. 再執行工具，核對三行結果。

先貼到 Claude Code，退出對話：

```text
/exit
```

貼到 Windows PowerShell：

```sh
Get-Content -Encoding UTF8 data/sample.csv
.\.venv\Scripts\python.exe csv_stats.py data/sample.csv
```

預期畫面（示意）：

```text
row_id,date,amount
1,2026-10-12,100
2,2026-10-12,200
3,2026-10-12,

資料筆數：3
欄位名稱：row_id, date, amount
空值總數：1
```

你可以直接用這三筆合成資料核對答案。標題列不能算成第四筆；空白的金額不能算成 0 元。

驗收：
- 輸出為 3 筆、三個指定欄位、1 個空值。
- 知道 Get-Content 是查看檔案，python.exe 是執行程式。
- 能解釋為什麼空值總數是 1。

卡關提示：結果不符時把實際與預期交給 Claude 修程式，不改 sample.csv。找不到 .venv\Scripts\python.exe 時，先 Get-Location 核對位置；仍不存在就回步驟 06 確認建立結果。

操作環境：家裡 MacBook Neo · 終端機

## 12｜練習空檔與不存在的檔案

工具會遇到不好用的資料。這一步練習辨認成功、空資料與錯誤。

1. 依序跑下面三個情況。empty.csv 是零內容檔案，header-only.csv 只有標題。
2. 不存在的 not-here.csv 應該回報找不到檔案。echo $? 要緊接在那次執行後，才能看它的退出碼。
3. 退出碼像結果標籤：0 表示成功，這份練習用 2 表示找不到檔案。

貼到 Mac 終端機：

```sh
python3 csv_stats.py data/empty.csv
python3 csv_stats.py data/header-only.csv
python3 csv_stats.py data/not-here.csv
echo $?
```

預期畫面（示意）：

```text
【空檔】
資料筆數：0
欄位名稱：無
空值總數：0

【只有標題】
資料筆數：0
欄位名稱：row_id, date, amount
空值總數：0

【找不到檔案】
錯誤：找不到檔案……
2
```

方括號中的標籤只是教學區分，程式不用印。錯誤句可包含路徑，但必須說明找不到檔案，不應顯示一大串未處理的 traceback。

驗收：
- 空檔正常顯示 0／無／0。
- 只有標題列顯示 0／保留欄位／0。
- 不存在檔案顯示明確錯誤，退出碼為 2。

卡關提示：echo $? 顯示 0：你可能在前一次執行後又做了別的指令。請重新執行不存在檔案，再立刻 echo $?。若仍不是 2，請 Claude 修正退出碼。

操作環境：公司 Windows · PowerShell

## 12｜練習空檔與不存在的檔案

工具會遇到不好用的資料。這一步練習辨認成功、空資料與錯誤。

1. 依序跑空檔、只有標題及不存在檔案。
2. PowerShell 用 $LASTEXITCODE 查看上一個外部程式的退出碼；緊接在不存在檔案的執行後查看。
3. 退出碼 0 是成功，這份練習用 2 表示找不到檔案。

貼到 Windows PowerShell：

```sh
.\.venv\Scripts\python.exe csv_stats.py data/empty.csv
.\.venv\Scripts\python.exe csv_stats.py data/header-only.csv
.\.venv\Scripts\python.exe csv_stats.py data/not-here.csv
$LASTEXITCODE
```

預期畫面（示意）：

```text
【空檔】
資料筆數：0
欄位名稱：無
空值總數：0

【只有標題】
資料筆數：0
欄位名稱：row_id, date, amount
空值總數：0

【找不到檔案】
錯誤：找不到檔案……
2
```

方括號中的標籤只是教學區分，程式不用印。錯誤句可包含路徑，但必須說明找不到檔案，不應顯示一大串未處理的 traceback。

驗收：
- 空檔正常顯示 0／無／0。
- 只有標題列顯示 0／保留欄位／0。
- 不存在檔案顯示明確錯誤，退出碼為 2。

卡關提示：PowerShell 的 $? 是 True／False，不是這裡的退出碼；要用 $LASTEXITCODE。若結果不是 2，先核對執行位置，再請 Claude 修正程式。

操作環境：家裡 MacBook Neo · 終端機

## 13｜用獨立驗收工具核對五項

標準答案已放在驗收腳本裡。你不用自己寫測試，但要親自執行並閱讀結果。

1. 執行 check_week01.py。它會檢查正常檔、完全空檔、只有標題、找不到檔案及含空白路徑。
2. 五項全部通過後才能往下。腳本是教學包附的標準，不能讓 Claude 改成「看起來通過」。
3. 完成後立刻 echo $?，應該是 0。

貼到 Mac 終端機：

```sh
python3 check_week01.py
echo $?
```

預期畫面（示意）：

```text
PASS  正常檔：3 筆 / 3 欄 / 1 空值
PASS  完全空檔
PASS  只有標題列
PASS  找不到檔案及退出碼
PASS  路徑含空白
結果：5/5 通過
0
```

PASS 是通過；FAIL 會列出預期、實際結果或錯誤。這裡的通過是程式結果，最後仍需要導師確認你的理解。

驗收：
- 五項都是 PASS，結果為 5/5。
- 驗收腳本退出碼是 0。
- 如果失敗，能指出是哪一項以及實際結果。

卡關提示：csv_stats.py 尚未存在：回步驟 10。發現 FAIL 時把案例名稱、預期及實際貼給 Claude；修程式後再重跑。不要只信它重新描述「已通過」。

操作環境：公司 Windows · PowerShell

## 13｜用獨立驗收工具核對五項

標準答案已放在驗收腳本裡。你不用自己寫測試，但要親自執行並閱讀結果。

1. 執行 check_week01.py 核對五個固定案例。
2. 五項都要 PASS，不能修改腳本或資料來過關。
3. 執行後立刻看 $LASTEXITCODE，應該是 0。

貼到 Windows PowerShell：

```sh
.\.venv\Scripts\python.exe check_week01.py
$LASTEXITCODE
```

預期畫面（示意）：

```text
PASS  正常檔：3 筆 / 3 欄 / 1 空值
PASS  完全空檔
PASS  只有標題列
PASS  找不到檔案及退出碼
PASS  路徑含空白
結果：5/5 通過
0
```

PASS 是通過；FAIL 會列出預期、實際結果或錯誤。這裡的通過是程式結果，最後仍需要導師確認你的理解。

驗收：
- 五項都是 PASS，結果為 5/5。
- 驗收腳本退出碼是 0。
- 如果失敗，能指出是哪一項以及實際結果。

卡關提示：csv_stats.py 尚未存在：回步驟 10。發現 FAIL 時把案例名稱、預期及實際貼給 Claude；修程式後再重跑。不要只信它重新描述「已通過」。

操作環境：家裡 MacBook Neo · 終端機

## 14｜讀文件，也讀懂關鍵程式

README 像使用手冊，CLAUDE.md 像這個專案給 Claude 的工作提醒。

1. 查看兩份文件，核對啟動與驗收指令是否與本手冊一致。
2. 再看程式，先不用背語法。找出讀檔、計算資料筆數、計算空值、印結果的地方。
3. 不懂時再啟動 Claude，請它逐段解釋；退出後仍可繼續下一步。

貼到 Mac 終端機：

```sh
cat README.md
cat CLAUDE.md
sed -n '1,160p' csv_stats.py
```

預期畫面（示意）：

```text
README.md：啟動方式、資料流、驗收、已知限制
CLAUDE.md：本週範圍與驗收提醒
csv_stats.py：讀取 → 統計 → 輸出
```

這裡顯示的是你實際檔案內容，程式寫法可以不同。重點是指令能照做，並且你能找到四個關鍵位置。

驗收：
- README 有新窗口啟動方式、正常及錯誤案例、驗收指令。
- 能用白話指出讀檔與統計程式的位置。
- 知道此時只是小資料教學原型，不直接當正式服務。

卡關提示：README 指令不一致：請 Claude 改文件並重跑確認。程式太長看不懂：請它聚焦解釋四個位置，不先做大規模重構。

操作環境：公司 Windows · PowerShell

## 14｜讀文件，也讀懂關鍵程式

README 像使用手冊，CLAUDE.md 像這個專案給 Claude 的工作提醒。

1. 查看兩份文件，核對啟動與驗收指令是否與本手冊一致。
2. 再看程式，先不用背語法。找出讀檔、計算資料筆數、計算空值、印結果的地方。
3. 不懂時再啟動 Claude，請它逐段解釋；退出後仍可繼續下一步。

貼到 Windows PowerShell：

```sh
Get-Content -Encoding UTF8 README.md
Get-Content -Encoding UTF8 CLAUDE.md
Get-Content -Encoding UTF8 csv_stats.py | Select-Object -First 160
```

預期畫面（示意）：

```text
README.md：啟動方式、資料流、驗收、已知限制
CLAUDE.md：本週範圍與驗收提醒
csv_stats.py：讀取 → 統計 → 輸出
```

這裡顯示的是你實際檔案內容，程式寫法可以不同。重點是指令能照做，並且你能找到四個關鍵位置。

驗收：
- README 有新窗口啟動方式、正常及錯誤案例、驗收指令。
- 能用白話指出讀檔與統計程式的位置。
- 知道此時只是小資料教學原型，不直接當正式服務。

卡關提示：README 指令不一致：請 Claude 改文件並重跑確認。程式太長看不懂：請它聚焦解釋四個位置，不先做大規模重構。

操作環境：家裡 MacBook Neo · 終端機

## 15｜查看變更，保存第一個版本

先挑選檔案、看修改內容，再 commit（保存一個版本）。這週不 push。

1. 先 git status。下面逐檔加入待保存清單，不會把 .venv 放進版本。
2. 查看 git diff --cached：--cached 表示查看剛才挑選的檔案。新檔案的新增行前面會有 +。
3. 確定只含這個練習的文件、程式與合成資料，再執行最後的 commit。

先查看，再逐檔挑選：

```sh
git status
git add .gitignore
git add CLAUDE.md
git add START-HERE.md
git add check_week01.py
git add data/sample.csv
git add data/empty.csv
git add data/header-only.csv
git add "data/sample space.csv"
git add csv_stats.py
git add README.md
```

仔細查看待保存內容：

```sh
git diff --cached --stat
git --no-pager diff --cached
```

確認內容後，再保存版本：

```sh
git commit -m "完成第一週 CSV 統計工具"
git log -1 --oneline
git status
```

預期畫面（示意）：

```text
[main ...] 完成第一週 CSV 統計工具
abc1234 完成第一週 CSV 統計工具
nothing to commit, working tree clean
```

版本的短編號會不同。最後 working tree clean 表示當前檔案已保存；沒有上傳到網路。

驗收：
- 保存前確實看過 diff。
- commit 紀錄含中文訊息。
- git status 顯示 working tree clean；.venv 沒有被加入。

卡關提示：identity unknown：核對步驟 07 的本機設定。nothing to commit 可能表示已保存，先看 git log。仍有新檔案時，先讓導師辨認來源，不用 git add .。

操作環境：公司 Windows · PowerShell

## 15｜查看變更，保存第一個版本

先挑選檔案、看修改內容，再 commit（保存一個版本）。這週不 push。

1. 先 git status。下面逐檔加入待保存清單，不會把 .venv 放進版本。
2. 查看 git diff --cached：--cached 表示查看剛才挑選的檔案。新檔案的新增行前面會有 +。
3. 確定只含這個練習的文件、程式與合成資料，再執行最後的 commit。

貼到 Windows PowerShell：

```sh
git status
git add .gitignore
git add CLAUDE.md
git add START-HERE.md
git add check_week01.py
git add data/sample.csv
git add data/empty.csv
git add data/header-only.csv
git add "data/sample space.csv"
git add csv_stats.py
git add README.md
```

貼到 Windows PowerShell：

```sh
git diff --cached --stat
git --no-pager diff --cached
```

貼到 Windows PowerShell：

```sh
git commit -m "完成第一週 CSV 統計工具"
git log -1 --oneline
git status
```

預期畫面（示意）：

```text
[main ...] 完成第一週 CSV 統計工具
abc1234 完成第一週 CSV 統計工具
nothing to commit, working tree clean
```

版本的短編號會不同。最後 working tree clean 表示當前檔案已保存；沒有上傳到網路。

驗收：
- 保存前確實看過 diff。
- commit 紀錄含中文訊息。
- git status 顯示 working tree clean；.venv 沒有被加入。

卡關提示：identity unknown：核對步驟 07 的本機設定。nothing to commit 可能表示已保存，先看 git log。仍有新檔案時，先讓導師辨認來源，不用 git add .。

操作環境：家裡 MacBook Neo · 終端機

## 16｜開一個新窗口，再做一次

別人要能照文件啟動，你自己也要能從新窗口開始。這是交付前的重要練習。

1. 按 Command＋N 開新的終端機窗口（或從選單開新窗口）。
2. 下面指令重新進入專案、啟用環境、确认 Claude，並重跑驗收。没有重新安裝任何工具。
3. 再練習一次含空白路徑；整個路徑放在雙引號裡。

貼到 Mac 終端機：

```sh
cd "$HOME/Developer/fde-week01"
source .venv/bin/activate
export PATH="$HOME/.local/bin:$PATH"
claude --version
python3 check_week01.py
python3 csv_stats.py "data/sample space.csv"
```

預期畫面（示意）：

```text
2.x.x (Claude Code)
……
結果：5/5 通過
資料筆數：3
欄位名稱：row_id, date, amount
空值總數：1
```

新窗口沒有沿用前一窗口的 Python 環境，所以要重新 source。引號讓含空白的檔名被當成一個完整路徑。

驗收：
- 從新終端機，不依賴舊窗口也能完成驗收。
- 含空白路徑的結果與正常檔一致。
- 能解釋 cd、source 與引號分別的用途。

卡關提示：command not found：確認這個新窗口也執行了 export PATH。找不到檔案：先看 pwd，核對是否進入正確專案。

操作環境：公司 Windows · PowerShell

## 16｜開一個新窗口，再做一次

別人要能照文件啟動，你自己也要能從新窗口開始。這是交付前的重要練習。

1. 從開始選單再開一個 PowerShell 窗口。
2. 重新進入專案，用專案內的 python.exe 重跑驗收。這不是重新安裝。
3. 含空白檔名放在雙引號中，讓它是一個完整路徑。

貼到新的 Windows PowerShell：

```sh
Set-Location "$HOME\Developer\fde-week01"
$env:Path = "$env:USERPROFILE\.local\bin;$env:Path"
claude --version
.\.venv\Scripts\python.exe check_week01.py
.\.venv\Scripts\python.exe csv_stats.py "data/sample space.csv"
```

預期畫面（示意）：

```text
2.x.x (Claude Code)
……
結果：5/5 通過
資料筆數：3
欄位名稱：row_id, date, amount
空值總數：1
```

每次直接呼叫 .venv 裡的 python.exe，就使用同一套 Python 環境。引號讓空白檔名不被分成兩個參數。

驗收：
- 從新 PowerShell 仍能通過 5/5。
- 含空白路徑的結果與正常檔一致。
- 能解釋 Set-Location、專案執行檔與引號的用途。

卡關提示：Claude 未辨識：重做這個窗口的 PATH 設定。找不到 python.exe 或資料檔：先 Get-Location 核對位置。

操作環境：家裡 MacBook Neo · 終端機

## 17｜整理成果，準備五分鐘 demo

把實際證據交出去，讓導師確認你做到了什麼、還需要什麼支援。

1. 最後再取一次版本紀錄與驗收結果，保存到課程笔記或交付文件。
2. 使用下方交付範本，補上實際結果。截圖只保留作業輸出，不放登入碼、token 或其他公司資料。
3. 和導師 demo：新終端機啟動 → 正常資料 → 空檔 → 不存在檔案 → 解釋四段程式。

貼到 Mac 終端機：

```sh
git log -1 --oneline
python3 check_week01.py
```

預期畫面（示意）：

```text
版本：abc1234 完成第一週 CSV 統計工具
驗收：5/5 通過
Demo：能啟動、能解釋、能處理錯誤
```

這裡的步驟勾選只幫你記錄操作。導師確認程式與理解後，才到課程首頁標記第一週通過。

驗收：
- 交付程式與文件、實际輸出、commit 記錄。
- 完成五分鐘 demo 與導師現場小挑戰。
- 能說清楚一個卡關問題、證據與處理方式。

卡關提示：某一項還沒完成：明確列出缺少的證據或需要的支援，不先勾選導師驗收通過。

操作環境：公司 Windows · PowerShell

## 17｜整理成果，準備五分鐘 demo

把實際證據交出去，讓導師確認你做到了什麼、還需要什麼支援。

1. 最後再取一次版本紀錄與驗收結果，保存到課程笔記或交付文件。
2. 使用下方交付範本，補上實際結果。截圖只保留作業輸出，不放登入碼、token 或其他公司資料。
3. 和導師 demo：新終端機啟動 → 正常資料 → 空檔 → 不存在檔案 → 解釋四段程式。

貼到 Windows PowerShell：

```sh
git log -1 --oneline
.\.venv\Scripts\python.exe check_week01.py
```

預期畫面（示意）：

```text
版本：abc1234 完成第一週 CSV 統計工具
驗收：5/5 通過
Demo：能啟動、能解釋、能處理錯誤
```

這裡的步驟勾選只幫你記錄操作。導師確認程式與理解後，才到課程首頁標記第一週通過。

驗收：
- 交付程式與文件、實际輸出、commit 記錄。
- 完成五分鐘 demo 與導師現場小挑戰。
- 能說清楚一個卡關問題、證據與處理方式。

卡關提示：某一項還沒完成：明確列出缺少的證據或需要的支援，不先勾選導師驗收通過。

## 官方參考

https://code.claude.com/docs/en/quickstart
https://code.claude.com/docs/en/setup
https://www.python.org/downloads/macos/
https://git-scm.com/install/mac
