⚖️Python 運算子與運算式介紹~邱允文


⚖️Python 運算子與運算式介紹

Python 中的運算式 (Expression) 是由 運算元 (Operands)  運算子 (Operators) 組成的程式碼片段,經計算後會產生一個值 (Value)

下面將為您介紹 Python 中主要的運算子類型及其在建構運算式中的作用。


一、Python 主要運算子類型 🛠️

1. 數學運算子 (Arithmetic Operators) 🧮

用於執行基本的算術運算,運算元通常是數字型態 (int  float)。

運算子說明範例
+加法5 + 2 
-減法5 - 2 
*乘法5 * 2 
/除法 (結果為浮點數)5 / 2 
//取整除 (Floor Division,向下取整)5 // 2 
%取餘數 (Modulo)5 % 2 
**指數 (Power)5 ** 2  (即 )

2. 比較運算子 (Comparison/Relational Operators) ⚖️

用於比較兩個運算元的值,結果總是 布林值 (True  False)。

運算子說明範例
==等於a == b
!=不等於a != b
>大於a > b
<小於a < b
>=大於等於a >= b
<=小於等於a <= b

用於組合條件判斷或操作布林值,結果是 True  False

運算子說明範例 (假設 x=True, y=False)
and邏輯且:兩邊都為 True 時,結果為 Truex and y  False
or邏輯或:至少一邊為 True 時,結果為 Truex or y  True
not邏輯非:反轉布林值not x  False

4. 賦值運算子 (Assignment Operators) ➡️

用於將值指定給變數,或執行運算後再將結果指定回去。最基本的是單獨的 = 符號。

運算子說明範例 (假設 x = 10)等效於
=簡單賦值x = 5-
+=加法賦值x += 2x = x + 2
-=減法賦值x -= 2x = x - 2
*=乘法賦值x *= 2x = x * 2
/=除法賦值x /= 2x = x / 2
**=指數賦值x **= 2x = x ** 2

在一個運算式中有多個運算子時,Python 會依循以下優先順序來決定執行的先後次序:

優先級運算子說明
最高()括號 (用於強制改變順序)
**指數
*, /, //, %乘法、除法、取整除、取餘數
+, -加法、減法
比較 (==, !=, >, <, >=, <=)
not邏輯非
and邏輯且
最低or邏輯或
賦值 (=, +=, -=, etc.)

提示: 如果不確定優先順序,或為了程式碼的清晰度,請一律使用括號 () 來明確指定您想要的計算順序。

優先順序範例

Python
result = 10 + 2 * 3**2 # 優先順序: 指數(3**2) -> 乘法(2*9) -> 加法(10+18) # 1. 3**2 = 9 # 2. 2 * 9 = 18 # 3. 10 + 18 = 28 print(result) # 輸出: 28

您想進一步了解如何結合這些運算子來編寫條件判斷式(例如在 if 語句中)嗎?


⚖️如何結合這些運算子來編寫條件判斷式

在 Python 中,結合運算子來編寫條件判斷式 (Conditional Expressions)if 語句、while 迴圈以及其他控制流程的核心。您主要會使用到比較運算子邏輯運算子來建立這些判斷式。

1. 條件判斷式的結構 🧱

一個條件判斷式必須是一個最終會被計算為 布林值 (TrueFalse) 的運算式。

範例:基本的 if 語句

Python
age = 20
if age >= 18:
    print("您已成年。")

在這個例子中,age >= 18 就是條件判斷式,它使用了比較運算子 (>=),計算結果為 True


2. 結合運算子編寫複雜條件 🧩

當您需要檢查多個條件同時成立,或只需其中一個條件成立時,就需要結合使用邏輯運算子 (and, or, not)。

📌 範例一:使用 and (邏輯且)

and 要求所有條件都必須為 True,整個判斷式才為 True

情境: 檢查變數 score 是否在 80 到 90 之間(包含 80 和 90)。

Python
score = 85

if score >= 80 and score <= 90:
    print("分數合格,且在優秀範圍內。")
else:
    print("分數不在特定範圍內。")

在這個運算式中:

  1. 檢查 score >= 80 85 >= 80 True

  2. 檢查 score <= 90 85 <= 90 True

  3. True and True True

📌 範例二:使用 or (邏輯或)

or 要求只要其中任何一個條件為 True,整個判斷式就為 True

情境: 檢查變數 day 是否為週末 (Saturday 或 Sunday)。

Python
day = "Saturday"

if day == "Saturday" or day == "Sunday":
    print("今天是週末,可以休息。")
else:
    print("今天是平日。")

在這個運算式中:

  1. 檢查 day == "Saturday" "Saturday" == "Saturday" True

  2. 檢查 day == "Sunday" "Saturday" == "Sunday" False

  3. True or False True

📌 範例三:使用 not (邏輯非)

not 會反轉布林值。

情境: 檢查列表 users 是否為空(即列表裡沒有任何元素)。

Python
users = [] # 假設目前沒有使用者

if not users:
    print("使用者列表為空,請新增用戶。")

在這個運算式中:

  1. 在 Python 中,空的列表 [] 被視為布林值 False

  2. not users 相當於 not False True


3. 複合判斷與優先順序

當您在一個判斷式中使用多種運算子時,請注意優先順序

  1. 括號 () (最高)

  2. 比較運算子 (==, >, etc.)

  3. not

  4. and

  5. or (最低)

範例:結合所有運算子

Python
is_admin = False
is_member = True
balance = 1000

# 複雜條件:如果「不是會員」或「餘額低於 500」,但「不是管理員」
if (not is_member or balance < 500) and (not is_admin):
    print("需要提醒用戶狀態或儲值。")
else:
    print("用戶狀態良好。")

由於 is_memberTrue,所以 not is_memberFalse。 運算步驟:

  1. not is_member False

  2. balance < 500 1000 < 500 False

  3. False or False False

  4. not is_admin not False True

  5. (False) and (True) False

最終判斷結果為 False,所以會執行 else 區塊。

⚖️編寫一個包含這三種邏輯運算子的條件判斷式


編寫一個包含三種邏輯運算子(and, or, not)的條件判斷式範例。

我們來設定一個虛擬的電影票購買條件


邏輯運算子綜合範例 🎬

情境: 決定某位顧客是否可以獲得一張學生優惠票

條件設定:

  1. 顧客必須是 學生 (is_student = True)

  2. 顧客必須是 成人 (age >= 18) 非兒童 (not is_child)

  3. 非黃金時段 (not is_premium_time) 才能使用優惠。

Python 條件判斷式

Python
# 運算元 (變數)
is_student = True     # 顧客是否為學生
age = 20              # 顧客的年齡
is_child = False      # 顧客是否為兒童
is_premium_time = False # 是否為黃金時段 (例如假日晚上)

# 條件判斷式
if is_student and (age >= 18 or not is_child) and (not is_premium_time):
    print("恭喜!您符合條件,可購買學生優惠票。")
else:
    print("抱歉,您不符合購買優惠票的所有條件。")

運算分析 (逐步拆解)

我們來看看 Python 是如何計算這個複雜運算式的:

  1. 處理 not 運算子 (優先級最高):

  2. 處理括號內的 or 運算子

  3. 處理所有 and 運算子 (從左到右):

由於整個判斷式最終結果為 True,程式將會輸出 "恭喜!您符合條件,可購買學生優惠票。"

⚖️修改任一個變數(例如將 is_premium_time = True),觀察結果如何變為 False

先前範例中的變數 is_premium_timeFalse 修改為 True,並觀察整個條件判斷式的最終結果。


邏輯運算子範例修改及分析 💡

原始設定 (結果為 True)

Python
is_student = True
age = 20
is_child = False
is_premium_time = False # 原始設定

# 運算式: is_student and (age >= 18 or not is_child) and (not is_premium_time)
# 結果: True and (True or True) and (True)  -> True
# 輸出: 恭喜!您符合條件,可購買學生優惠票。

修改設定 (結果變為 False)

現在,我們將 is_premium_time 設為 True,模擬在「黃金時段」購買電影票的情況。

Python
is_student = True
age = 20
is_child = False
is_premium_time = True # <-- 變更此變數

# 條件判斷式:
if is_student and (age >= 18 or not is_child) and (not is_premium_time):
    print("恭喜!您符合條件,可購買學生優惠票。")
else:
    print("抱歉,您不符合購買優惠票的所有條件。")

運算步驟拆解

我們再次拆解判斷式:

$$\text{is\_student}\ \mathbf{and}\ (\text{age} \ge 18\ \mathbf{or}\ \mathbf{not}\ \text{is\_child})\ \mathbf{and}\ (\mathbf{not}\ \text{is\_premium\_time})$$
  1. 處理 not 運算子 (優先級高):

    • $\mathbf{not}\ \text{is\_child} \rightarrow \mathbf{not}\ \text{False} \rightarrow \text{True}$

    • $\mathbf{not}\ \text{is\_premium\_time} \rightarrow \mathbf{not}\ \text{True} \rightarrow \mathbf{False}$

  2. 處理括號內的 or 運算子

    • $\text{age} \ge 18 \rightarrow 20 \ge 18 \rightarrow \text{True}$

    • $(\text{True}\ \mathbf{or}\ \text{True}) \rightarrow \text{True}$

  3. 處理所有 and 運算子 (從左到右):

    • $(\text{is\_student})\ \mathbf{and}\ (\text{True})\ \mathbf{and}\ (\mathbf{False})$

    • $(\text{True})\ \mathbf{and}\ (\text{True})\ \mathbf{and}\ (\mathbf{False})$

    • $\text{True}\ \mathbf{and}\ \mathbf{False} \rightarrow \mathbf{False}$

執行結果

由於整個運算式最終的結果是 False,因此程式會執行 else 區塊:

抱歉,您不符合購買優惠票的所有條件。


結論: 由於 is_premium_time 變為 True,導致運算式中的最後一個邏輯部分 (not is_premium_time) 變為 False。在 and 運算中,只要有一個部分是 False,整個判斷式就會變成 False



留言