第一次和 AI 一起寫程式,也第一次抓到 AI 的錯
確認開發環境,學會和 AI 分工,並把第一個網頁送上網路。今天最重要的不是 AI 寫了什麼,而是你發現它哪裡寫錯。
本週結束時你會
今天的時間安排
| 0:00–0:15 | 環境確認(環境安裝步驟 5) |
| 0:15–0:35 | 派課室線上課程 1-1:人與 AI 的分工、五步工作流程 |
| 0:35–1:00 | 實作 1【跟著做】第一次讓 AI 寫程式,並要求它解釋 |
| 1:00–1:10 | 休息 |
| 1:10–1:50 | 實作 2【自己做】審查 AI 的成績程式 |
| 1:50–2:30 | 實作 3【跟著做】第一次上線:Git × GitHub × Vercel,本週檢核 |
實作 2 是本週重點,至少留 40 分鐘。學生第一次發現「程式能跑卻是錯的」,通常會很有感,記得讓兩三位同學分享他們是怎麼發現 70 分邊界錯誤的。
五步工作流程
- 描述需求:輸入、輸出、限制、例外、驗收方式。
- 先要計畫:請 AI 列出計畫,你看懂、確認後才寫程式。
- 小步實作:一次只做一件事。
- 執行驗證:親手執行、用標準答案比對。
- 回饋修正:附上錯誤訊息、重現步驟、期望結果。
下週會把這套流程擴充成專門用來做網站的「六步建站法」。
實作 1:第一次讓 AI 寫程式【跟著做】
在 Antigravity 開啟 程式設計三 資料夾,建立子資料夾 w01,在 AI 對話框貼上:
在 w01 資料夾建立 bmi.py:讓使用者輸入身高(公分)與體重(公斤),印出 BMI(小數一位)與體位(過輕/正常/過重/肥胖,以衛福部標準:18.5、24、27 為分界)。 輸入不是數字或小於等於 0 時,顯示中文提示並請使用者重新輸入。 完成後先不要執行,用條列的方式向我解釋程式的每一段在做什麼。
讀完解釋,再請它執行,並用下表測試:
| 身高 | 體重 | 正確結果 |
|---|---|---|
| 170 | 65 | 22.5,正常 |
| 150 | 54 | 24.0,過重(剛好在分界上) |
| abc | — | 提示重新輸入,程式不結束 |
為什麼要先解釋再執行:你看得懂,才有能力檢查。看不懂的地方直接追問:「第 8 行的 while True 是什麼意思?」
24.0 是分界值。衛福部標準是「24 ≤ BMI < 27 為過重」,若 AI 寫成 bmi > 24,就會把 24.0 判成正常。讓學生自己測出來,這是本週第一個邊界值的例子。
實作 2:審查 AI 的成績程式【自己做】
從課程資源下載 s3-1-1_VibeCoding入門 練習包,放進 w01。grades_ai版.py 是 AI 依規格寫出的程式,規格要求:
分數不是數字、或超出 0–100 時,顯示訊息並略過該筆 90/80/70/60 分以上分別為 A/B/C/D,其餘為 F
這一題不要把程式丟給 AI 修。先靠自己找出問題,你才會知道之後 AI 修得對不對。
- 在終端機執行
python grades_ai版.py,記錄發生什麼事。 - 一次修一個問題,修完再執行。
- 能跑完後,用
python grades_ai版.py empty.csv再測一次。 - 打開
scores.csv,人工核對每位學生的等第。
對答案
| # | 問題 | 怎麼發現 |
|---|---|---|
| 1 | CSV 讀進來的分數是字串,加總出現 TypeError | 執行就出錯 |
| 2 | 「缺考」無法轉成數字,沒有略過 | 修完 1 之後出現 ValueError |
| 3 | 105 分超出範圍卻被計入 | 對照規格 |
| 4 | score > 70 讓剛好 70 分的李小華拿到 D | 不會報錯,只能人工核對或寫測試 |
| 5 | 空檔案造成 ZeroDivisionError | 用 empty.csv 測試 |
修正後:有效資料 6 筆,平均 75.7,李小華 70 分為 C。
巡堂時最常見的狀況
學生修完 TypeError 就以為完成了,沒有測 empty.csv,也沒有人工核對。請他們打開 scores.csv 逐行比對,大多數人會在這時才發現 70 分的問題。
有人用 try / except 把所有錯誤都包起來、什麼都不印。程式不會當掉了,但違反「顯示訊息」的規格,提醒他們回頭看規格。
實作 3:第一次上線【跟著做】
把一個自我介紹網頁,從你的電腦送到公開網址。整學期的每一個專案都會用這條路上線,所以今天一定要走通。
- 完成 Git × GitHub × Vercel 工作流程的「一次性設定」:安裝 GitHub CLI 並自己執行
gh auth login、用 GitHub 帳號註冊 Vercel。 - 照同一頁的「實作:第一次上線」步驟 1–4 操作:建立網頁 → 推上 GitHub → 在 Vercel 匯入 → 修改後再推送一次。
xxxx.vercel.app 網址;第二次推送後約 1 分鐘,重新整理就能看到修改後的內容。過程中需要登入 GitHub 或 Vercel 時,一律自己在瀏覽器完成。AI 如果要求你提供密碼或 token,拒絕它,並回報老師。
常見卡關:gh 安裝後沒有重新開啟 Antigravity,導致找不到指令;Vercel 匯入清單看不到儲存庫,是 GitHub App 權限只開放了部分儲存庫。兩者在工作流程頁的「常見狀況」都有解法。來不及完成的學生,列為下週開頭 10 分鐘的補做項目。
課後練習:把模糊需求寫成規格
從三個模糊需求中選一個(背單字的程式、算班費的工具、抽籤決定午餐的程式),用「輸入、輸出、限制、例外、驗收方式」五要素改寫,貼到 Antigravity 並加上:
(貼上你的規格) 請先不要寫程式。請扮演一位嚴格的工程師,指出這份規格中你還需要「猜」的地方,至少 3 點。
把 AI 指出的問題補進規格,寫在學習單上。下週寫 PROJECT.md 時會用到同樣的能力。
本週檢核
第 2 週預告:六步建站法與 PROJECT.md。請先想一個你自己會想用的網站點子。