Python 中的運算式 (Expression) 是由 運算元 (Operands) 和 運算子 (Operators) 組成的程式碼片段,經計算後會產生一個值 (Value)。
下面將為您介紹 Python 中主要的運算子類型及其在建構運算式中的作用。
一、Python 主要運算子類型 🛠️
1. 數學運算子 (Arithmetic Operators) 🧮
用於執行基本的算術運算,運算元通常是數字型態 (int 或 float)。
2. 比較運算子 (Comparison/Relational Operators) ⚖️
用於比較兩個運算元的值,結果總是 布林值 (True 或 False)。
用於組合條件判斷或操作布林值,結果是 True 或 False。
4. 賦值運算子 (Assignment Operators) ➡️
用於將值指定給變數,或執行運算後再將結果指定回去。最基本的是單獨的 = 符號。
在一個運算式中有多個運算子時,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. 條件判斷式的結構 🧱
一個條件判斷式必須是一個最終會被計算為 布林值 (True 或 False) 的運算式。
範例:基本的 if 語句
age = 20
if age >= 18:
print("您已成年。")
在這個例子中,age >= 18 就是條件判斷式,它使用了比較運算子 (>=),計算結果為 True。
2. 結合運算子編寫複雜條件 🧩
當您需要檢查多個條件同時成立,或只需其中一個條件成立時,就需要結合使用邏輯運算子 (and, or, not)。
📌 範例一:使用 and (邏輯且)
and 要求所有條件都必須為 True,整個判斷式才為 True。
情境: 檢查變數 score 是否在 80 到 90 之間(包含 80 和 90)。
score = 85
if score >= 80 and score <= 90:
print("分數合格,且在優秀範圍內。")
else:
print("分數不在特定範圍內。")
在這個運算式中:
檢查
score >= 8085 >= 80True檢查
score <= 9085 <= 90TrueTrue and TrueTrue
📌 範例二:使用 or (邏輯或)
or 要求只要其中任何一個條件為 True,整個判斷式就為 True。
情境: 檢查變數 day 是否為週末 (Saturday 或 Sunday)。
day = "Saturday"
if day == "Saturday" or day == "Sunday":
print("今天是週末,可以休息。")
else:
print("今天是平日。")
在這個運算式中:
檢查
day == "Saturday""Saturday" == "Saturday"True檢查
day == "Sunday""Saturday" == "Sunday"FalseTrue or FalseTrue
📌 範例三:使用 not (邏輯非)
not 會反轉布林值。
情境: 檢查列表 users 是否為空(即列表裡沒有任何元素)。
users = [] # 假設目前沒有使用者
if not users:
print("使用者列表為空,請新增用戶。")
在這個運算式中:
在 Python 中,空的列表
[]被視為布林值False。not users相當於not FalseTrue
3. 複合判斷與優先順序
當您在一個判斷式中使用多種運算子時,請注意優先順序:
括號
()(最高)比較運算子 (
==,>, etc.)notandor(最低)
範例:結合所有運算子
is_admin = False
is_member = True
balance = 1000
# 複雜條件:如果「不是會員」或「餘額低於 500」,但「不是管理員」
if (not is_member or balance < 500) and (not is_admin):
print("需要提醒用戶狀態或儲值。")
else:
print("用戶狀態良好。")
由於 is_member 是 True,所以 not is_member 是 False。
運算步驟:
not is_memberFalsebalance < 5001000 < 500FalseFalse or FalseFalsenot is_adminnot FalseTrue(False) and (True)False
最終判斷結果為 False,所以會執行 else 區塊。
⚖️編寫一個包含這三種邏輯運算子的條件判斷式
編寫一個包含三種邏輯運算子(and, or, not)的條件判斷式範例。
我們來設定一個虛擬的電影票購買條件。
邏輯運算子綜合範例 🎬
情境: 決定某位顧客是否可以獲得一張學生優惠票。
條件設定:
顧客必須是 學生 (
is_student = True)。顧客必須是 成人 (
age >= 18) 或 非兒童 (not is_child)。非黃金時段 (
not is_premium_time) 才能使用優惠。
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 是如何計算這個複雜運算式的:
處理
not運算子 (優先級最高):處理括號內的
or運算子:處理所有
and運算子 (從左到右):
由於整個判斷式最終結果為 True,程式將會輸出 "恭喜!您符合條件,可購買學生優惠票。"
⚖️修改任一個變數(例如將 is_premium_time = True),觀察結果如何變為 False
先前範例中的變數 is_premium_time 從 False 修改為 True,並觀察整個條件判斷式的最終結果。
邏輯運算子範例修改及分析 💡
原始設定 (結果為 True)
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,模擬在「黃金時段」購買電影票的情況。
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("抱歉,您不符合購買優惠票的所有條件。")
運算步驟拆解
我們再次拆解判斷式:
處理
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}$
處理括號內的
or運算子:$\text{age} \ge 18 \rightarrow 20 \ge 18 \rightarrow \text{True}$
$(\text{True}\ \mathbf{or}\ \text{True}) \rightarrow \text{True}$
處理所有
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。
留言
張貼留言