在 Python 程式設計中,運算子 (operator) 是用於對值和變數執行運算的特殊符號。運算子和運算元 (operand) 組成了表達式 (expression),表達式是 Python 程式碼的基本組成部分。本文將詳細介紹 Python 中四大類核心運算子:算術運算子、比較運算子、邏輯運算子和賦值運算子,並提供豐富的範例程式碼和表格整理,幫助您快速掌握 Python 運算子的用法。
什麼是運算子 (Operator) 和運算元 (Operand)?
- 運算子 (Operator): 執行特定運算的符號,例如加號 (
+
)、減號 (-
)、等於 (==
) 等。 - 運算元 (Operand): 運算子所操作的值或變數。
例如,在表達式 2 + 3
中,+
是運算子,2
和 3
是運算元。
Python 運算子總覽
Python 提供了以下幾類主要的運算子:
- 算術運算子 (Arithmetic Operators): 用於執行數學運算。
- 比較運算子 (Comparison Operators): 用於比較兩個值的大小關係。
- 邏輯運算子 (Logical Operators): 用於組合或修改布林值 (True/False)。
- 賦值運算子 (Assignment Operators): 用於將值賦給變數。
接下來,我們將逐一介紹這四類運算子。
1. 算術運算子 (Arithmetic Operators)
算術運算子用於執行基本的數學運算,例如加、減、乘、除等。
運算子 | 描述 | 範例 | 結果 |
---|---|---|---|
+ |
加法 | 10 + 5 |
15 |
- |
減法 | 10 - 5 |
5 |
* |
乘法 | 10 * 5 |
50 |
/ |
除法 (結果為浮點數) | 10 / 5 |
2.0 |
/ |
除法 (結果為浮點數) | 10 / 4 |
2.5 |
// |
整數除法 (結果為整數) | 10 // 5 |
2 |
// |
整數除法 (結果為整數) | 10 // 3 |
3 |
% |
取餘數 | 10 % 5 |
0 |
% |
取餘數 | 10 % 3 |
1 |
** |
次方 | 10 ** 2 |
100 |
a = 10
b = 3
print(f"{a} + {b} = {a + b}") # 13
print(f"{a} - {b} = {a - b}") # 7
print(f"{a} * {b} = {a * b}") # 30
print(f"{a} / {b} = {a / b}") # 3.3333333333333335
print(f"{a} // {b} = {a // b}") # 3
print(f"{a} % {b} = {a % b}") # 1
print(f"{a} ** {b} = {a ** b}") # 1000
print(f"'hello' + 'world' = {'hello' + 'world'}") # helloworld
print(f"'ha' * 3 = {'ha' * 3}") #hahaha
注意事項:
- 除法 (
/
) 的結果一定是浮點數,即使兩個運算元都是整數且可以整除。 - 整數除法 (
//
) 的結果會捨去小數部分,只保留整數。 - 除數不能為 0,否則會引發
ZeroDivisionError
。
2. 比較運算子 (Comparison Operators)
比較運算子用於比較兩個值的大小關係,結果為布林值 (True
或 False
)。
運算子 | 描述 | 範例 | 結果 |
---|---|---|---|
== |
等於 | 5 == 5 |
True |
!= |
不等於 | 5 != 3 |
True |
> |
大於 | 5 > 3 |
True |
< |
小於 | 5 < 3 |
False |
>= |
大於等於 | 5 >= 5 |
True |
<= |
小於等於 | 5 <= 3 |
False |
x = 10
y = 5
print(f"{x} == {y}: {x == y}") # False
print(f"{x} != {y}: {x != y}") # True
print(f"{x} > {y}: {x > y}") # True
print(f"{x} < {y}: {x < y}") # False
print(f"{x} >= {y}: {x >= y}") # True
print(f"{x} <= {y}: {x <= y}") # False
print(f"'apple' < 'banana': {'apple' < 'banana'}") # True (字串比較)
注意事項: 比較浮點數時,由於精度問題,建議使用 math.isclose()
函數 (可簡單提及,或提供連結)。
3. 邏輯運算子 (Logical Operators)
邏輯運算子用於組合或修改布林值,常用於條件判斷。
運算子 | 描述 | 範例 |
---|---|---|
and |
且 (兩個都 True 才 True) | x and y |
or |
或 (其中一個 True 就 True) | x or y |
not |
非 (True 變 False, False 變 True) | not x |
真值表 (Truth Table):
x |
y |
x and y |
x or y |
not x |
---|---|---|---|---|
True |
True |
True |
True |
False |
True |
False |
False |
True |
False |
False |
True |
False |
True |
True |
False |
False |
False |
False |
True |
x = True
y = False
print(f"{x} and {y}: {x and y}") # False
print(f"{x} or {y}: {x or y}") # True
print(f"not {x}: {not x}") # False
# 複雜的邏輯運算
age = 25
is_student = False
if age >= 18 and not is_student:
print("符合資格")
if age < 12 or is_student:
print("可以購買優惠票")
重要觀念:短路求值 (Short-circuit evaluation)
and
: 如果第一個運算元是False
,就不會計算第二個運算元。or
: 如果第一個運算元是True
,就不會計算第二個運算元。
4. 賦值運算子 (Assignment Operators)
賦值運算子用於將值賦給變數。
運算子 | 描述 | 範例 | 等同於 |
---|---|---|---|
= |
基本賦值 | x = 5 |
x = 5 |
+= |
加法賦值 | x += 3 |
x = x + 3 |
-= |
減法賦值 | x -= 2 |
x = x - 2 |
*= |
乘法賦值 | x *= 4 |
x = x * 4 |
/= |
除法賦值 | x /= 2 |
x = x / 2 |
//= |
整數除法賦值 | x //= 3 |
x = x // 3 |
%= |
取餘數賦值 | x %= 2 |
x = x % 2 |
**= |
次方賦值 | x **= 3 |
x = x ** 3 |
x = 10
x += 5 # x 現在是 15 (x = x + 5)
x -= 2 # x 現在是 13 (x = x - 2)
x *= 3 # x 現在是 39 (x = x * 3)
x /= 2 # x 現在是 19.5 (x = x / 2)
x //= 4 # x 現在是 4.0 (x = x // 4)
x %= 3 # x 現在是 1.0 (x = x % 3)
x **= 2 # x 現在是 1.0 (x = x ** 2)
print(x)
複合賦值運算子可以讓程式碼更簡潔,也更有效率 (因為只需要計算一次變數的位址)。
5. 補充:運算子的優先順序和結合性
當一個表達式中有多個運算子時,Python 會依照運算子的優先順序 (precedence) 來決定計算順序。例如,先乘除後加減,就像我們在數學中學到的一樣。
如果同一層級的運算子具有相同的優先順序,則會依照它們的結合性 (associativity) 來決定計算順序。大部分的二元運算子 (binary operators) 都是左結合 (left-associative),也就是從左到右計算。但次方運算子 (**
) 是右結合 (right-associative)。
您可以使用括號 ()
來明確指定運算順序,這也是最推薦的做法,因為它可以提高程式碼的可讀性。
常見運算子優先順序 (由高到低):
**
(次方)*
,/
,//
,%
(乘、除、整數除、取餘數)+
,-
(加、減)- 比較運算子 (
<
,>
,<=
,>=
,==
,!=
) not
and
or
# 運算順序範例
result = 2 + 3 * 4 # 先乘法 (3 * 4 = 12),再加法 (2 + 12 = 14)
print(result) # 輸出: 14
result = (2 + 3) * 4 # 先括號內加法 (2 + 3 = 5),再乘法 (5 * 4 = 20)
print(result) # 輸出: 20
result = 2 ** 3 ** 2 # 右結合:先計算 3 ** 2 = 9,再計算 2 ** 9 = 512
print(result) #輸出: 512
result = (2 ** 3) ** 2 # 使用括號改變計算順序
print(result) # 64
總結
本文詳細介紹了 Python 中四大類核心運算子:算術運算子、比較運算子、邏輯運算子和賦值運算子。這些運算子是 Python 程式設計的基礎,透過組合使用這些運算子,您可以建構出各種複雜的表達式和邏輯判斷,實現程式的功能。請務必熟悉每種運算子的用法、優先順序和結合性,並多加練習,才能寫出正確、高效的 Python 程式碼。
小測驗
請問以下程式碼的輸出為何?
a = 10
b = 5
c = 2
result = a + b * c / 2 - 1
print(result)
x = True
y = False
z = True
print(not x or y and z)
m = 8
m %= 3
m **= 2
print(m)
(解答: 14.0, False, 4)