在 AI 時代,寫程式的方式正在發生根本性的轉變。
* 傳統方式 (Coding):你需要熟背語法、函數庫,一個字一個字地敲出程式碼。
* Vibe Coding (AI 協作):你專注於「想做什麼 (What)」與「邏輯流程 (Flow)」,用自然語言描述你的需求(Prompt),讓 AI 幫你生成程式碼。你更像是一位軟體架構師或產品經理。
本課程目標:
1. 學習如何撰寫精準的 Prompt 來引導 AI 寫 Python。
2. 利用 Python 處理真實世界的「政府開放資料 (Open Data)」。
3. 完成從「讀取檔案」、「API 串接」到「資料視覺化」的完整流程。
我們將採用 Prompt -> Run -> Fix/Refine 的循環模式。
flowchart LR
A["想法/需求 (Idea)"] -->|"Prompting"| B("AI 生成程式碼")
B --> C{"執行與測試"}
C -->|"成功"| D["功能擴充/優化"]
C -->|"錯誤/不如預期"| E["修正 Prompt 或貼上錯誤訊息"]
E --> B
我們有一份模擬的氣象資料(JSON 格式),需要用 Python 讀取它並顯示出我們關心的資訊(例如:城市與溫度)。
首先,請 AI 幫我們生成一份測試用的 JSON 資料。
Prompt (給 AI):
請幫我產生一個名為weather_data.json的檔案內容,格式為 JSON。
內容包含台灣 5 個主要城市(台北、台中、高雄、花蓮、台東)的氣象資訊。
每個城市應包含:city(城市名),temperature(攝氏溫度),humidity(濕度),condition(天氣狀況,如晴天、雨天)。
(學生將 AI 生成的內容存成 weather_data.json)
現在,我們不自己查 json 模組的語法,而是告訴 AI 我們要這做什麼。
Prompt (給 AI):
我有一個 Python 程式開發的需求。目標:撰寫一個 Python 腳本 (
parse_json.py)。
輸入:讀取同目錄下的weather_data.json檔案。
處理:解析 JSON 內容。
輸出:在終端機列印出每個城市的名稱與溫度,格式如:「台北:25°C」。請提供完整的 Python 程式碼,並加上簡單的註解。
AI 通常會使用 Python 內建的 json 模組:
import json
# 讀取檔案
with open('weather_data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
# 迴圈讀取並列印
for item in data:
print(f"{item['city']}:{item['temperature']}°C")
with open (這比較安全)?編碼有設定 utf-8 嗎?讀取靜態檔案不夠看,我們要讓程式連上網路,抓取即時資料。這裡我們使用 Python 最流行的 requests 模組。
我們不需要重寫,而是請 AI 修改 剛剛的程式。
Prompt (給 AI):
接續上一個程式。現在我想要改為透過 API 取得資料。修改需求:
1. 使用requests模組發送 GET 請求。
2. 目標 URL 假設為https://api.example.com/weather(註:實作時可替換為真實的氣象局 API 或測試用 API)。
3. 加入錯誤處理:如果網路連線失敗或狀態碼不是 200,請列印錯誤訊息。請給我修改後的完整程式碼。
response.status_code == 200 代表成功。try...except 是程式穩健的關鍵,AI 幫你寫好了嗎?文字列表太枯燥,我們想把溫度數據變成一張「長條圖 (Bar Chart)」,讓趨勢一目了然。
這是 Python 資料科學界最基礎的繪圖庫。
Prompt (給 AI):
我想要將氣象資料視覺化。新功能需求:
1. 使用matplotlib模組。
2. 繪製一張長條圖 (Bar Chart)。
3. X 軸:城市名稱。
4. Y 軸:溫度。
5. 圖表標題設為 "Taiwan Cities Temperature"。
6. 若城市名稱包含中文字,請確保圖表能正確顯示中文(或者是告訴我如何設定字型)。請寫出完整的 Python 程式碼。
在 matplotlib 顯示中文常會遇到亂碼(變成方框)。
* Vibe Coding 技巧:遇到錯誤直接把錯誤訊息貼給 AI,「圖表上的中文變成方框了,怎麼辦?」,AI 會教你設定 plt.rcParams['font.sans-serif']。
現在你已經掌握了 Vibe Coding 的基本流。請嘗試以下挑戰:
透過今天的實作,你獲得了以下能力:
| 技能維度 | 具體內容 |
|---|---|
| Prompt Engineering | 能夠清楚描述輸入、處理邏輯與輸出格式,引導 AI 寫程式。 |
| Python 基礎 | 理解 json 解析、requests 網路請求、matplotlib 繪圖的基本用法。 |
| 除錯能力 | 遇到問題時,懂得利用 AI 協助分析錯誤訊息並修正。 |
| 資料素養 | 了解如何將非結構化或半結構化的開放資料,轉化為有意義的視覺資訊。 |