Python 編程入門

從偽代碼過渡到 Python,練習變量、運算符、輸入輸出、if / for / while 循環以及除錯技巧。

4.2 Python 是甚麼?(快速認識)

Python 是一種高階、通用的程式語言, 特色是語法接近英文、可讀性高,適合用於解難、學算法及編寫小工具。 一般情況下不需要先「編譯」成 .exe,直接用 Python 直譯器就可以執行(即「邊讀邊做」)。

Python 的特色(考試+實戰都常見)

易讀易寫

  • 縮排表示程式區塊(if / for / while)。
  • 少括號、少符號,整體寫法清晰。
重視可讀性

動態型別

  • 變量一般毋須事先宣告 int / float
  • Python 會按目前的值自動判斷型別。
之後會喺 4.2 詳講

庫(library)多

  • 內置:abs()round()type()
  • 常用模組:mathrandom
使用現成函數很方便

用途廣

  • 學校:算法、偽代碼 → Python。
  • 現實:自動化、資料處理、AI、網頁後端等。
通用語言

第一個 Python 例子:輸出一句話

print("Hello, Python!")

💡 print() 用於輸出;暫時當作「顯示結果」即可,之後 輸入與輸出 會再詳細講。

快速檢查:以下哪一句最正確?

A. Python 一定要先宣告變量型別(例如 int/float)
B. Python 主要用縮排分辨程式區塊
C. Python 每行都必須以 ; 結尾
D. Python 只可以做網頁,不可以做其他用途

4.2 變量與數據類型

變量(variable)好像貼上標籤的儲物箱,用來暫時存放數值或字串。Python 會根據放入的資料,自動判斷資料類型(int / float / bool / str)。

常見數據類型

int 整數

  • … -2, -1, 0, 1, 2, 3 …
  • 例:length = 12
不含小數點

float 浮點數

  • 帶有小數點的實數
  • 例:price = 56.5-0.382
計算面積、平均數時常用

bool 布爾值

  • 只有兩個可能的值:TrueFalse
  • 例:passed = True
常配合 if 進行判斷

str 字串

  • 一串文字,可以包括字母、數字及符號
  • 例:"ICT""Password123!"
必須以引號包圍

命名規則與關鍵字

示例:同一個變量可以儲存不同類型的數據

length = 12 print(length) print(type(length)) # int length = 12.0 print(length) print(type(length)) # float length = "The length is twelve" print(length) print(type(length)) # str

💡 提示:可以在 Thonny 輸入以上程式碼,觀察 Shell 顯示的資料類型。

小遊戲:觀察數據,判斷資料類型 👀

系統會隨機產生一個 Python 數據值,請判斷它屬於 intfloatbool 還是 str

目前數據值:(按「下一題」開始)

Debug 01:哪裡出錯?(變量命名)
code = 404 print("code") print(code) import = "5**2" print(import)

思考:上述程式會出錯,請先估計原因,再在 Thonny 中改正。

(按「下一題」開始)
顯示提示
  • print("code") 中有引號,因此會輸出字串 code,而不是變量的內容(屬於邏輯問題,但不會令程式崩潰)。
  • import 是 Python 關鍵字,不可以用作變量名稱,會產生語法錯誤。

4.2 數據類型轉換:int() / float() / str()

Python 讀入的資料通常是字串,需要透過「轉型函數」轉換為數值,才可以進行計算。

常用轉型函數

例子 A:字串 → 整數

length = "12" print(type(length)) # str length = int(length) print(length) # 12 print(type(length)) # int

例子 B:失敗例子

length = "12.1" length = int(length) # 會產生 ValueError

因為 "12.1" 並不是「整數」格式,int() 無法處理。

小練習:先估結果,再到 Thonny 測試

動手試:嘗試錯誤轉型會發生什麼事?

在下方輸入幾行程式,使用 int()float()str() 轉換不同資料, 再透過 Python 編譯器執行,看看在何種情況下會產生 ValueError,然後再改為正確寫法。

例子:int("12") 可以;但 int("12.3") 不可以;必須改用 float("12.3")

Debug 02:輸入全都是字串
mark1 = input("First mark: ") mark2 = input("Second mark: ") avg = (mark1 + mark2) / 2 print("Average =", avg)

這段程式用來計算平均分數,但會出錯,原因是 input() 取得的是字串。 請在下方用 int()float() 改寫,然後用 Python 編譯器測試並自動核對答案。

顯示參考答案
mark1 = float(input("First mark: ")) mark2 = float(input("Second mark: ")) avg = (mark1 + mark2) / 2 print("Average =", avg)

4.2 運算符與算式

算式 = 數據 + 運算符。Python 支援加法、減法、乘法、除法、整數除法、餘數及乘冪等運算。

常見數學運算符

運算子 名稱 說明 例子 運算結果
+ 加法 用於將兩個數值相加,結果為兩數之和。 常用於累積數值或計算總和。 y = 1 + 2 3
- 減法 用於計算兩個數值之間的差, 即以前面的數值減去後面的數值。 y = 5 - 2 3
* 乘法 用於計算兩個數值的乘積, 常見於重複加法或面積、總量的計算。 y = 2 * 3 6
/ 實數除法 用於進行除法運算, 不論能否整除,結果必定為實數(float)。 即使兩個操作數皆為整數,結果仍會包含小數部分(如適用)。 5 / 2 2.5
// 整數除法 用於取得除法結果的整數部分, 會捨去小數部分,只保留商的整數值。 常用於索引、次數或計數用途。 5 // 2 2
% 餘數(Modulo) 用於計算整數除法後的餘數, 常用於判斷奇偶數、循環結構或分組問題。 10 % 3 1
** 乘冪(指數運算) 用於計算次方, 表示「底數」的「指數」次乘積, 常見於數學運算及科學計算。 2 ** 3 8

複合指定運算符

將運算符與 = 合併,寫法更簡潔:

y = 5 y += 2 # y = y + 2 → 7 y -= 3 # y = y - 3 → 4 y *= 4 # y = y * 4 → 16 y //= 5 # y = y // 5 → 3
快速提問:以下哪一個答案正確?(先心算,再按按鈕顯示答案)
  • Q1:10 // 3 = ?
  • Q2:10 % 3 = ?
  • Q3:2 ** 4 = ?
快速提問 2:隨機算式自己計 ✏️

按「下一題」產生一條算式,先自行計算,再在下方輸入答案。

4.2 輸出 print() 與輸入 input()

print() 輸出

name = "David" mark = 89 print("Hi", name) print("Your mark is", mark) print("Hi", end=" ") print(name, end=", ") print("your mark is", mark)

input() 輸入

length = float(input("Please input a length: ")) width = float(input("Please input a width: ")) area = length * width print("Area =", area)
動手寫:輸入姓名及三科分數,輸出平均分
  1. 使用 input() 讀入 name 以及三個分數。
  2. 將分數轉為 float
  3. 計算平均值 avg = (a + b + c) / 3
  4. 利用一行 print() 顯示,例如:「Sam, your average is 78.3」。
顯示參考答案
name = input("Please enter your name: ") m1 = float(input("Mark 1: ")) m2 = float(input("Mark 2: ")) m3 = float(input("Mark 3: ")) avg = (m1 + m2 + m3) / 3 print(name, ", your average is", avg)

4.2 函數:內置、數學庫、隨機庫(+其他常用)

學 Python 解題,好多時唔係「自己手寫晒所有公式」,而係識得用現成的函數(function)標準庫(library / module)加速。

✅ 下面用 Tab 分類:內置 Built‑in/mathrandom/其他常用(字串/列表/檔案)。 每個 Tab 都有一套 Flashcards(有更詳細例子 + 常見陷阱)。

速查:常用 Python 函數(按 Tab,再點卡片睇示例)

內置函數(built-in):毋須 import,開箱即用。最常見:輸入/輸出、轉型、長度、範圍、最大最小等。

(速查表)常用內置函數一覽
函數 用途(1 句講清) 小例子
print(*items) 輸出結果(可一次過印多個值) print("Hi", name)
input(prompt) 讀取輸入(回傳字串 age = int(input("Age: "))
int(x) / float(x) 把 x 轉成整數/小數(常配合 input) mark = float("70.5")
str(x) 把 x 轉成字串(方便串字) msg = "Score=" + str(score)
type(x) 檢查型別(debug 常用) print(type(x))
abs(x) 絕對值 abs(-12.5)
round(x, n) 四捨五入到 n 位小數 round(10/3, 2)
len(s) 長度(字串/列表都可用) len("python")
range(a, b, step) 產生整數序列(for 循環必用) for i in range(1, 6):
min() / max() 找最小/最大(可用於列表/多個值) max([3, 10, -2])
sum() 求和(數列、列表) sum([1, 2, 3])
sorted() 排序(回傳新列表,不改原本) sorted(nums)
enumerate() for 循環同時拎 index + 值 for i, v in enumerate(a):
zip() 把多個序列「一對一」綁埋一齊 for x, y in zip(a, b):

👇 點擊以下「示例卡片」會即時顯示示例程式同預期輸出。

👇 點擊上面任何一張「示例卡片」,下方會顯示示例程式與預期輸出/解釋:

示例程式:
(請先點選上方其中一張卡片)
預期輸出/說明:
(程式執行後的結果或解釋會顯示在此處)

如欲實際執行程式碼,建議複製到 Thonny / IDLE;或用下方的 Python playground 即時試。

Python 函數 playground:即時執行程式

可在下方輸入任何使用 abs()round()mathrandom 等函數的程式,然後按「Run 程式」查看輸出結果。

可以隨意修改上方程式,再次按「Run 程式」觀察結果。

綜合練習:用齊內置、數學庫和隨機庫函數

請根據程式模板,在 ??? 位置填上正確的函數呼叫,並使用: abs()round()type()math.sqrt()math.exp()math.sin()random.random()random.randint()

請保留每一行 print() 裏面的文字不變,只需要修改 ??? 部份。

當程式完成後,按「核對答案」,系統會檢查你有沒有輸出所有指定行。

期望畫面示例(數值大約如下,實際輸出可略有差異):
abs(x) = 3.678
round(x, 2) = -3.68
type(x) = <class 'float'>(或類似表示)
sqrt(16) = 4.0exp(1) ≈ 2.718...sin(pi/2) ≈ 1.0
最後兩行會顯示一個 0 至 1 之間的隨機小數,以及 1 至 6 之間的隨機整數。

4.3 選擇結構:if / elif / else

關係運算符(用於比較)

⚠️ 請留意 =(指定)與 ==(比較)意義完全不同!

if / else 基本結構

mark = 70 if mark >= 50: print("Pass") else: print("Fail")

mark >= 50 成立(True)時,會執行 if 部分;否則便執行 else 部分。

if / elif / else 多向選擇

mark = 70 if mark >= 85: grade = "A" elif mark >= 70: grade = "B" elif mark >= 50: grade = "C" else: grade = "F" print("Your grade is", grade)

Python 會由上而下檢查各個條件,遇到第一個為 True 的條件就會執行相應部分,之後離開整個 if 結構。

Debug 03:縮排錯誤
mark = 70 if mark >= 50: print("Pass") else: print("Fail")

請指出錯誤位置,再寫出正確版本,並可以用下方小型 Python 編譯器測試自己的答案。

顯示參考答案
mark = 70 if mark >= 50: print("Pass") else: print("Fail")
if 練習:成績等級判斷

請撰寫一個程式,輸入 mark(0–100):

  • ≥ 80 → 輸出 "Excellent"
  • 60–79 → 輸出 "Good"
  • 40–59 → 輸出 "Pass"
  • < 40 → 輸出 "Fail"
顯示參考答案
mark = int(input("Mark: ")) if mark >= 80: print("Excellent") elif mark >= 60: print("Good") elif mark >= 40: print("Pass") else: print("Fail")

4.3 布爾運算:AND / OR / NOT

有時需要同時考慮多個條件,可以用布爾運算符將兩個或以上的條件結合起來。

age = 20 is_student = True if (age <= 25) and is_student: print("Student ticket")
動手試:布爾運算示例程式

在下方撰寫一些布爾表達式,例如 3 > 1 and 5 < 10not True,或配合 if 一起使用,然後透過 Python 編譯器查看結果。

判斷題:以下表達式結果為 True 或 False?

假設:age = 10is_senior = False

  1. (age < 12) or is_senior
  2. (age >= 18) and (age <= 65)
  3. not is_senior
布爾運算 20 題判斷題

請按「下一題」顯示題目,然後選擇 True 或 False。系統會即時批改並累積得分。

4.4 重複執行:for 循環

for 循環適用於「已知需要重複多少次」的情況,例如由 1 數到 10,或重複輸出 5 次星號。

range() 基本用法

for i in range(1, 6): print(i) # 輸出:1 2 3 4 5(每行一個) for i in range(0, 10, 2): print(i) # 輸出:0 2 4 6 8
for 練習:乘數表

請撰寫一個程式,輸出 7 的乘數表(由 7×1 至 7×10)。

顯示參考答案
for i in range(1, 11): print("7 x", i, "=", 7 * i)
for 練習:求和 Σ

輸入正整數 n,計算 1 + 2 + ... + n

顯示參考答案
n = int(input("n: ")) summation = 0 for i in range(1, n + 1): summation = summation + i print("Sum =", summation)

4.4 while 循環

while 循環會先檢查條件,條件成立時重複執行循環本體;條件不成立時便跳出循環。

num = 17 while num < 100: print(num) num = num + 17

⚠️ 請務必在循環中更新與條件相關的變量,否則可能會變成無限循環。

例子:要求用戶輸入正數

num = float(input("Enter a positive number: ")) while num <= 0: print("Not positive, try again.") num = float(input("Enter a positive number: ")) print("Thank you! You entered", num)
while 練習:輸入密碼

設定正確密碼為 "ict123",使用 while 反覆要求用戶輸入,直至輸入正確才結束。

顯示參考答案
password = "ict123" guess = input("Enter password: ") while guess != password: print("Wrong password, try again.") guess = input("Enter password: ") print("Login success!")

綜合 Debug 練習:閱讀錯誤訊息與修改程式碼

編寫程式時一定會遇到錯誤,重要的是學會閱讀錯誤訊息,並逐步檢查和修正。

三大錯誤類型

Debug 04:語法錯誤
print("Hello World!"

請先在小型 Python 編譯器試行這段程式,觀察出現的錯誤訊息,再自行修改程式碼,令它正確輸出 Hello World!

顯示參考答案

問題在於漏掉右括號:

print("Hello World!")
Debug 05:邏輯錯誤
total = 0 for i in range(1, 11): total = total + 2 * i print("Sum of 1..10 =", total)

程式本來想計算 1 + 2 + ... + 10,理應輸出 55,但現在會輸出錯誤答案。 請在下方修改程式,然後以「核對答案」自動檢查輸出是否正確。

顯示參考答案
  • 原因:加總的是 2 * i,實際在計算 2(1+2+...+10)
  • 改寫方法:循環內應改為 total = total + i
total = 0 for i in range(1, 11): total = total + i print("Sum of 1..10 =", total)

挑戰 20 條偽代碼 → Python 練習

每一題都包含:偽代碼留白區讓學生自行撰寫 Python,以及可選擇顯示的參考答案。 建議學生:先嘗試以自己的方法完成,再打開答案對照。

偽代碼使用「輸入」「輸出」「←」等字眼,語法不需要完全與 Python 一致。

(由題庫載入中…)