Python
環境與心態:你不是來學寫程式,是來看懂 AI 怎麼寫的
環境與心態:你不是來學寫程式,是來看懂 AI 怎麼寫的
如果你是靠 AI 寫程式的 Vibe Coder,日常工作不是自己從零敲出每一行,而是跟 AI 溝通、讓 AI 產出程式碼。但AI 不會主動告訴你哪裡有風險,金鑰外洩、SQL Injection、輸入一個錯字就整支程式崩潰,這些坑都得靠你自己看得出來。
這是 Python 系列的第一課,不是要你背語法,而是要練出三個核心能力:看得懂、知道為什麼、能判斷。裝好環境、寫出第一支程式只是起點,真正的功夫在後面三道遞進題。
你將學到什麼
安裝 Python 與挑編輯器
從 python.org 下載到裝好 VS Code 擴充套件,五分鐘搞定開發環境。
虛擬環境是什麼
每個專案有自己的獨立空間,套件版本不再互相打架。
看懂錯誤訊息
SyntaxError、NameError 各代表什麼,出錯了要怎麼描述給 AI 聽。
寫出好提示詞
目標、輸入輸出、限制條件、說明要求,四個要素讓 AI 產出更精準。
抓出 AI 的安全陷阱
API 金鑰硬寫死、SQL Injection,兩個最常見也最危險的坑。
三道遞進題自我檢核
讀懂、改寫、抓錯,練完就知道自己是不是真的學會了。
為什麼 Vibe Coder 也要懂 Python
Python 是目前 AI 生態最核心的語言,幾乎所有主流 AI 工具、自動化套件、資料分析框架都以 Python 為基礎。學會看懂 Python,等於同時看懂 AI 生態的共同語言。
- AI 不會主動告訴你風險:AI 產出的程式碼預設不考慮安全性、版本相容性或例外處理。
- 看不懂就無法改需求:跟 AI 溝通程式需求時,你必須能描述「哪裡不對」,而不是只說「不能用」。
- 錯誤由你負責:最終部署執行的程式碼是你的責任,不是 AI 的。金鑰外洩、資料外流、系統崩潰,後果都在你這裡。
- 懂概念讓你更快:理解基本概念的 Vibe Coder,提示詞精準度更高、除錯速度更快。
- 看得懂:AI 產出的程式碼每一行在做什麼。
- 知道為什麼:為什麼這樣寫,而不是那樣寫。
- 能判斷:AI 的答案合不合理、哪裡可能有問題。
為什麼選 Python:Vibe Coder 的定位
下面這張表整理 Python 常見的應用場景,以及每個場景對 Vibe Coder 的實際意義:你不需要自己寫出這些程式,但要看得懂 AI 幫你產出的版本在做什麼。
| 應用場景 | Python 能做什麼 | 對 Vibe Coder 的意義 |
|---|---|---|
| 自動化 | 批次處理檔案、寄信、爬資料 | 看懂 AI 寫的自動化腳本 |
| 資料分析 | 用 pandas、matplotlib 計算與視覺化 | 理解 AI 產出的分析報告程式 |
| API 串接 | 用 requests 呼叫外部服務 | 知道 AI 怎麼跟其他系統溝通 |
| AI 工具開發 | LangChain、OpenAI SDK | 讀懂 AI Agent 的核心邏輯 |
| 資料安全 | 加密、金鑰管理、輸入驗證 | 判斷 AI 的程式碼有沒有安全漏洞 |
Python 安裝與編輯器選擇
安裝 Python
前往 python.org 下載最新穩定版(3.11 以上皆可)。安裝時務必勾選「Add Python to PATH」,否則終端機會找不到 Python 指令,這是初學者最常犯的錯誤。
# 安裝完畢後,打開終端機輸入
# Mac 用 Terminal,Windows 用 PowerShell
python --version
# 應該看到類似 Python 3.12.x
pip --version
# 應該看到類似 pip 24.x from ...
- Windows:安裝時沒有勾選「Add Python to PATH」,重新安裝並勾選即可。
- Mac:系統內建的是舊版 Python 2,改輸入
python3 --version試試看。 - 任何系統:改完要重新開啟終端機才會生效,不要用舊視窗測試。
選擇編輯器
| 工具 | 適合誰 | 官方連結 |
|---|---|---|
| VS Code | 所有人首選,輕量免費,AI 擴充整合最好 | code.visualstudio.com |
| Cursor | Vibe Coder 進階選擇,AI 原生編輯器 | cursor.com |
| Jupyter Notebook | 資料分析、學習實驗,可以逐格執行 | jupyter.org |
| PyCharm | 全職 Python 開發者,功能全面但較重 | jetbrains.com/pycharm |
安裝 VS Code 後,開啟延伸模組面板,搜尋並安裝官方出品的 Python 擴充套件,就能獲得語法提示、除錯、虛擬環境切換等功能。
虛擬環境與套件管理
不同專案可能需要不同版本的套件,直接裝到系統會造成版本衝突。虛擬環境讓每個專案都有自己獨立的空間,互不干擾。
| 情境 | 沒有虛擬環境 | 有虛擬環境 |
|---|---|---|
| 安裝套件 | 裝到系統,影響所有專案 | 只影響這個專案 |
| 版本衝突 | 兩個專案要不同版本,互相干擾 | 各自獨立,不互相干擾 |
| 給別人跑 | 對方環境不同,容易出錯 | 用 requirements.txt 一鍵還原 |
# 步驟一:在專案資料夾內建立虛擬環境
python -m venv .venv
# 步驟二:啟動,Mac 或 Linux 用這行
source .venv/bin/activate
# 步驟二:啟動,Windows PowerShell 用這行
.venv\Scripts\activate
# 啟動成功後,終端機前方會出現 (.venv) 字樣
pip install requests pandas
# 這一行在安裝套件
pip freeze > requirements.txt
# 這一行在輸出套件清單
(.venv) 這樣的字樣。第一支程式:Hello, World! 與除錯思維
全世界的程式教學都從「Hello, World!」開始,因為它最小、最容易驗證環境有沒有設好。對 Vibe Coder 來說,重點不在「怎麼寫」,而是「為什麼這樣寫」與「出錯怎麼看懂錯誤訊息」。
# 這是我的第一支 Python 程式
# 井字號開頭的文字是註解,Python 不會執行它
print("Hello, World!")
print("你好,這是我的第一支程式!")
逐行拆解
# 這是我的第一支程式:註解,純粹給人看的說明文字,Python 直接跳過。AI 寫的程式如果沒有註解,可以請它補上。print(...)是內建函式,把括號裡的內容顯示在畫面上。print是函式名稱,括號是固定格式,裡面放你想顯示的內容。"Hello, World!":雙引號包起來的文字叫做字串,告訴 Python「這是文字,不是指令」。單引號寫法效果完全一樣。
除錯思維:看懂錯誤訊息
# 忘記加右括號,會出現 SyntaxError
print("Hello"
# SyntaxError: '(' was never closed
# 意思是括號沒有關閉,要找到對應的右括號
# 用了沒有定義過的變數,會出現 NameError
print(message)
# NameError: name 'message' is not defined
# 意思是 message 這個名稱從來沒有被建立過
- 看錯誤類型:
SyntaxError是語法錯,NameError是名稱未定義,TypeError是型別用錯。 - 看行號:錯誤訊息會告訴你第幾行出問題,直接跳到那一行。
- 貼給 AI 看:把完整錯誤訊息複製,貼給 AI,讓它解釋並修正。
如何跟 AI 要程式:提示詞技巧
Vibe Coding 的核心技能不是寫程式,而是怎麼跟 AI 說清楚你要什麼。提示詞寫得好,AI 產出的程式碼品質差很多。
| 要素 | 說明 | 範例 |
|---|---|---|
| 目標 | 這段程式要做什麼 | 「讀取一個 CSV 檔案」 |
| 輸入輸出 | 資料從哪裡來、結果要輸出什麼 | 「輸入檔案路徑,輸出每一行的第一欄」 |
| 限制條件 | 有沒有特別要求 | 「檔案可能不存在,要處理例外」 |
| 說明要求 | 要求 AI 加上解釋 | 「每一行加上繁體中文註解說明用途」 |
好提示詞與壞提示詞
data.csv,印出每一行的姓名欄位(第一欄)。如果檔案不存在,顯示錯誤訊息而不是讓程式崩潰。每一行程式碼加上繁體中文註解說明用途。」讓 AI 自我審查
產出程式碼後,可以再追問 AI,讓它自己找問題:
- 「這段程式碼有沒有安全疑慮?」
- 「如果使用者輸入惡意內容,這段程式會怎樣?」
- 「有沒有更簡潔的寫法,功能完全一樣?」
- 「這段程式碼的效能瓶頸在哪裡?」
AI 產出的常見陷阱
AI 寫的程式碼預設不考慮安全性,也不會主動告訴你潛在風險。以下四類問題是 Vibe Coder 最常遇到的,你需要有能力識別它們。
陷阱一:API Key 硬寫在程式裡
api_key = "sk-abc123你的真實金鑰"
# 一旦上傳到 GitHub,金鑰就外洩了
.env 檔案,程式碼裡只留讀取環境變數的那一行。import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("API_KEY")
# 從環境變數讀取,不寫死在程式碼裡
api_key = "sk- 這類開頭的字串,有就要求修正。陷阱二:把使用者輸入直接塞進 SQL
query = "SELECT * FROM users WHERE name = '" + user_input + "'"
# 使用者只要輸入 ' OR '1'='1 就能讀到所有資料
cursor.execute("SELECT * FROM users WHERE name = ?", (user_input,))
# 讓資料庫自己處理,使用者輸入不會被當成指令執行
陷阱三:沒有處理例外,程式直接崩潰
f = open("data.txt")
# 檔案不存在就直接崩潰,還可能洩漏系統路徑等錯誤細節
try:
f = open("data.txt")
except FileNotFoundError:
print("檔案不存在,請確認路徑")
# 優雅提示,不會讓程式崩潰
open() 或 requests.get() 這類函式,也包含資料庫連線。有的話問 AI:「請加上 try 搭配 except,並說明每一種例外情況的處理方式。」陷阱四:過時的語法或已棄用的套件
import imp
# Python 3.12 已經完全移除這個模組,AI 給的舊寫法在新版會直接報錯
三道遞進題:讀懂、改寫、抓錯
這三題難度遞增。第一題確認你能讀懂程式碼,第二題確認你能跟 AI 溝通需求,第三題確認你能識別 AI 的錯誤。
- 讀懂:你無法改你看不懂的東西,讀懂程式碼是跟 AI 協作的最低門檻。
- 改寫:知道怎麼請 AI 修改程式,才能把 AI 的輸出從「可以跑」變成「安全可用」。
- 抓錯:AI 會寫出有安全漏洞的程式碼,你必須看得出來,才能避免上線後出問題。
題目一:讀懂(基礎)
任務:不要執行程式,直接用文字說出每一行在做什麼,以及 int() 和 f-string 分別的作用。
name = input("請輸入你的姓名:")
age = int(input("請輸入你的年齡:"))
birth_year = 2025 - age
print(f"{name} 大約出生於 {birth_year} 年。")
name = input("請輸入你的姓名:")這一行會顯示提示文字,等待使用者輸入,輸入的文字存進變數name。age = int(input(...))是兩個函式套疊。內層input()先取得使用者輸入,永遠是字串,外層int()把字串轉換成整數,因為之後要做數學運算。birth_year = 2025 - age:用 2025 減去年齡,估算出生年份,結果存進birth_year。f"{name}...{birth_year}...":f-string,字串前加f,大括號內的變數名稱會自動替換成實際的值。int()缺席時輸入「abc」會直接崩潰,這就是題目二要修的問題。
題目二:改寫(進階)
上面的程式有個問題:如果使用者輸入的年齡不是數字,例如輸入「abc」,int() 會讓程式崩潰。請用以下提示詞請 AI 修正,然後觀察它改了哪些地方。
請修改這段程式碼,加上例外處理。
如果使用者輸入的年齡不是數字,
顯示錯誤訊息並要求重新輸入,
直到輸入正確為止。每一行都要加中文註解。
- 加上 while True 迴圈:讓程式不斷重試,直到輸入正確才跳出,這是「持續等待合法輸入」的標準寫法。
- 用 try 搭配 except 包住 int() 呼叫:當
int()轉換失敗,也就是輸入不是數字時,except ValueError捕捉錯誤,顯示提示訊息,不讓程式崩潰。 - 加上 break 跳出迴圈:轉換成功後,用
break離開 while 迴圈,繼續執行後面的程式。
# 用 while 迴圈持續要求輸入,直到成功為止
while True:
try:
# 嘗試把輸入轉成整數
age = int(input("請輸入你的年齡:"))
break
# 成功就跳出迴圈
except ValueError:
# 轉換失敗,代表輸入的不是數字,提示重新輸入
print("請輸入數字,例如 25")
try 搭配 except 和 while True。如果 AI 只改了一部分,追問:「你有用 while 迴圈讓使用者可以重新輸入嗎?」題目三:抓錯(高階)
任務:找出以下 AI 產出的程式碼中至少兩個安全問題,說明危險原因,並寫出你會如何請 AI 修正。
import sqlite3
api_key = "sk-abc123realkey"
conn = sqlite3.connect("users.db")
user_input = input("搜尋使用者:")
query = "SELECT * FROM users WHERE name='" + user_input + "'"
conn.execute(query)
api_key = "sk-abc123realkey" 把真實金鑰直接寫死在程式碼中。一旦上傳到 GitHub 或分享給他人,金鑰就會外洩,攻擊者可以用你的帳號呼叫 API 並產生費用。修正提示詞:「請把 api_key 改成從 .env 檔案讀取,使用 os.getenv('API_KEY') 取得。」user_input 拼接進 SQL 字串。若輸入 ' OR '1'='1,條件永遠成立,可讀取所有使用者資料,甚至刪除整個資料庫。修正提示詞:「請改用參數化查詢,不要直接把使用者輸入拼接到 SQL 字串裡。」術語速查表
| 術語 | 說明 |
|---|---|
| Vibe Coding | 以自然語言指揮 AI 產出程式碼的開發方式,重點在溝通與判斷。 |
| SDK | 軟體開發套件,讓你能呼叫某個服務,例如 OpenAI,的現成工具包。 |
| PATH | 作業系統尋找可執行指令的路徑清單。Python 加入 PATH 後,終端機才能直接執行 python 指令。 |
| pip | Python 內建的套件管理工具,用來安裝第三方套件,例如 pip install requests。 |
| 虛擬環境 | 每個專案的獨立 Python 空間,套件版本互不影響,避免不同專案的套件互相干擾。 |
| requirements.txt | 記錄專案套件清單,讓他人一鍵用 pip install -r requirements.txt 還原環境。 |
| 函式(Function) | 一段被命名的程式碼,呼叫時執行特定功能,print() 或 input() 都是內建函式。 |
| 字串(String) | 用引號包起來的文字資料,例如 "Hello"。Python 中單雙引號效果相同。 |
| 巢狀函式 | 函式包函式,例如 int(input()) 這種寫法,Python 由內而外依序執行。 |
| f-string | 字串前加 f,大括號內可直接放變數名稱,執行時自動替換成值,例如 f"{name}"。 |
| SQL Injection | 將惡意 SQL 指令注入查詢語句的攻擊,可能導致資料庫外洩,防禦方式是參數化查詢。 |
| .env 檔案 | 存放環境變數,例如 API Key,的設定檔,不應該上傳到 GitHub 等版本控制系統。 |
| try 搭配 except | 例外處理語法。try 區塊執行可能出錯的程式,出錯時跳到 except 區塊處理,程式不會崩潰。 |
| ValueError | 資料型別轉換失敗時拋出的錯誤,例如把 "abc" 用 int() 轉換成整數。 |
| 參數化查詢 | 讓資料庫處理使用者輸入的 SQL 寫法,可以完全防止 SQL Injection。 |
| 環境變數 | 作業系統層級的設定值,適合存放金鑰,透過 os.getenv() 讀取,不寫進程式碼。 |
重點整理與完成清單
| 概念 | 說明 | 記憶方式 |
|---|---|---|
print() | 把括號裡的內容顯示在畫面上 | print 等於印出來 |
input() | 暫停程式,等待使用者輸入 | input 等於輸入 |
int() | 把字串轉換成整數 | int 是 integer 整數 |
| f-string | 字串前加 f,用大括號嵌入變數值 | f 等於 format,填空格式 |
| 虛擬環境 | 每個專案的獨立 Python 空間 | 像每個專案的獨立房間 |
| PATH | 系統尋找指令的路徑清單 | 找不到指令先查 PATH |
| SQL Injection | 將惡意指令注入 SQL 查詢的攻擊 | 用參數化查詢防禦 |
| .env 檔案 | 存放金鑰等敏感設定,不上傳 GitHub | 金鑰不寫死在程式碼 |
模組一完成清單
- Python 安裝完成,終端機可以執行
python --version - VS Code 安裝完成,並裝好 Python 擴充套件
- 建立虛擬環境並成功啟動,看到
(.venv)字樣 - 成功執行 Hello, World! 程式
- 完成作業題目一:能逐行說明程式碼
- 完成作業題目二:請 AI 加上例外處理並理解修改內容
- 完成作業題目三:找出 API Key 外洩與 SQL Injection 兩個問題
延伸學習
HE201|Harness Engineering System Design(6 小時)
六小時的實作課:從 Blueprint 走到可以跑的規格,再用 No-code、n8n 低程式碼與程式碼三條路各做一次同一個 harness,最後處理可靠度——重試、錯誤處理、人工覆核。7 章 54 課,含常見坑與排錯、Capstone 實作,附學員講義 PDF。
NT$ 5,999
HE101|Harness Engineering Foundation(3 小時)
三小時的地圖課,不是操作課。把 Model 與 AI System 分開,拆解一套 AI Harness 的八個組成(Goal、Context、Knowledge、Rules、Tools、Workflow、Evaluation、Iteration),再帶你逆向拆解四個你已經在用的系統,最後畫出自己的第一張 Harness Blueprint。5 章 27 課,附學員講義 PDF 與術語速查表。
NT$ 2,599

