Python 運算子全攻略:算術、比較、邏輯、賦值運算一次搞懂

Python 運算子全攻略:算術、比較、邏輯、賦值運算一次搞懂

在 Python 程式設計中,運算子 (operator) 是用於對值和變數執行運算的特殊符號。運算子和運算元 (operand) 組成了表達式 (expression),表達式是 Python 程式碼的基本組成部分。本文將詳細介紹 Python 中四大類核心運算子:算術運算子、比較運算子、邏輯運算子和賦值運算子,並提供豐富的範例程式碼和表格整理,幫助您快速掌握 Python 運算子的用法。

什麼是運算子 (Operator) 和運算元 (Operand)?

  • 運算子 (Operator): 執行特定運算的符號,例如加號 (+)、減號 (-)、等於 (==) 等。
  • 運算元 (Operand): 運算子所操作的值或變數。

例如,在表達式 2 + 3 中,+ 是運算子,23 是運算元。

Python 運算子總覽

Python 提供了以下幾類主要的運算子:

  1. 算術運算子 (Arithmetic Operators): 用於執行數學運算。
  2. 比較運算子 (Comparison Operators): 用於比較兩個值的大小關係。
  3. 邏輯運算子 (Logical Operators): 用於組合或修改布林值 (True/False)。
  4. 賦值運算子 (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)

比較運算子用於比較兩個值的大小關係,結果為布林值 (TrueFalse)。

運算子 描述 範例 結果
== 等於 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)。

您可以使用括號 () 來明確指定運算順序,這也是最推薦的做法,因為它可以提高程式碼的可讀性。

常見運算子優先順序 (由高到低):

  1. ** (次方)
  2. *, /, //, % (乘、除、整數除、取餘數)
  3. +, - (加、減)
  4. 比較運算子 (<, >, <=, >=, ==, !=)
  5. not
  6. and
  7. 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)

張貼留言

較新的 較舊