py程式設計(三)課程網站
第 1 週 · 單元 1-1

第一次和 AI 一起寫程式,也第一次抓到 AI 的錯

確認開發環境,學會和 AI 分工,並把第一個網頁送上網路。今天最重要的不是 AI 寫了什麼,而是你發現它哪裡寫錯。

W1Vibe Coding入門

本週結束時你會

今天的時間安排

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 分邊界錯誤的。

五步工作流程

  1. 描述需求:輸入、輸出、限制、例外、驗收方式。
  2. 先要計畫:請 AI 列出計畫,你看懂、確認後才寫程式。
  3. 小步實作:一次只做一件事。
  4. 執行驗證:親手執行、用標準答案比對。
  5. 回饋修正:附上錯誤訊息、重現步驟、期望結果。

下週會把這套流程擴充成專門用來做網站的「六步建站法」。

實作 1:第一次讓 AI 寫程式【跟著做】

在 Antigravity 開啟 程式設計三 資料夾,建立子資料夾 w01,在 AI 對話框貼上:

提示詞 1 Antigravity
在 w01 資料夾建立 bmi.py:讓使用者輸入身高(公分)與體重(公斤),印出 BMI(小數一位)與體位(過輕/正常/過重/肥胖,以衛福部標準:18.5、24、27 為分界)。
輸入不是數字或小於等於 0 時,顯示中文提示並請使用者重新輸入。
完成後先不要執行,用條列的方式向我解釋程式的每一段在做什麼。

讀完解釋,再請它執行,並用下表測試:

身高體重正確結果
1706522.5,正常
1505424.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 修得對不對。

  1. 在終端機執行 python grades_ai版.py,記錄發生什麼事。
  2. 一次修一個問題,修完再執行。
  3. 能跑完後,用 python grades_ai版.py empty.csv 再測一次。
  4. 打開 scores.csv,人工核對每位學生的等第。

對答案

#問題怎麼發現
1CSV 讀進來的分數是字串,加總出現 TypeError執行就出錯
2「缺考」無法轉成數字,沒有略過修完 1 之後出現 ValueError
3105 分超出範圍卻被計入對照規格
4score > 70 讓剛好 70 分的李小華拿到 D不會報錯,只能人工核對或寫測試
5空檔案造成 ZeroDivisionError用 empty.csv 測試

修正後:有效資料 6 筆,平均 75.7,李小華 70 分為 C。

巡堂時最常見的狀況

學生修完 TypeError 就以為完成了,沒有測 empty.csv,也沒有人工核對。請他們打開 scores.csv 逐行比對,大多數人會在這時才發現 70 分的問題。

有人用 try / except 把所有錯誤都包起來、什麼都不印。程式不會當掉了,但違反「顯示訊息」的規格,提醒他們回頭看規格。

實作 3:第一次上線【跟著做】

把一個自我介紹網頁,從你的電腦送到公開網址。整學期的每一個專案都會用這條路上線,所以今天一定要走通。

  1. 完成 Git × GitHub × Vercel 工作流程的「一次性設定」:安裝 GitHub CLI 並自己執行 gh auth login、用 GitHub 帳號註冊 Vercel。
  2. 照同一頁的「實作:第一次上線」步驟 1–4 操作:建立網頁 → 推上 GitHub → 在 Vercel 匯入 → 修改後再推送一次。
應該看到一個 xxxx.vercel.app 網址;第二次推送後約 1 分鐘,重新整理就能看到修改後的內容。

過程中需要登入 GitHub 或 Vercel 時,一律自己在瀏覽器完成。AI 如果要求你提供密碼或 token,拒絕它,並回報老師。

常見卡關:gh 安裝後沒有重新開啟 Antigravity,導致找不到指令;Vercel 匯入清單看不到儲存庫,是 GitHub App 權限只開放了部分儲存庫。兩者在工作流程頁的「常見狀況」都有解法。來不及完成的學生,列為下週開頭 10 分鐘的補做項目。

課後練習:把模糊需求寫成規格

從三個模糊需求中選一個(背單字的程式、算班費的工具、抽籤決定午餐的程式),用「輸入、輸出、限制、例外、驗收方式」五要素改寫,貼到 Antigravity 並加上:

提示詞 Antigravity
(貼上你的規格)

請先不要寫程式。請扮演一位嚴格的工程師,指出這份規格中你還需要「猜」的地方,至少 3 點。

把 AI 指出的問題補進規格,寫在學習單上。下週寫 PROJECT.md 時會用到同樣的能力。

本週檢核

第 2 週預告:六步建站法與 PROJECT.md。請先想一個你自己會想用的網站點子。