Python - 運算符與案例聲明:初學者指南

大家好,有志於成為 Python 程式設計師的你!今天,我們將深入探討 Python 的一項新功能:match-case 聲明。將其視為處理代碼中不同情況的瑞士軍刀。讓我們一起踏上這段令人興奮的旅程!

Python - Match-Case Statement

什麼是 Match-Case 聲明?

match-case 聲明是在 Python 3.10 中引入的,它就像是 if-elif-else 結構的超級英雄版本。它使我們能夠將一個值與多個模式進行比較,並根據第一個匹配的模式執行代碼。

基本語法

match 主題:
case 模式1:
# 模式1的代碼
case 模式2:
# 模式2的代碼
case _:
# 預設情況

讓我們用一個有趣的例子來解釋這一點:

def 歡迎超級英雄(英雄):
match 英雄:
case "蜘蛛俠":
print("能力越大,責任越大!")
case "鋼鐵俠":
print("我是鋼鐵俠。")
case "黑寡婦":
print("我總是在收拾你們這些男孩的爛攤子。")
case _:
print("我不認識那個超級英雄,但他們可能很棒!")

歡迎超級英雄("蜘蛛俠")
歡迎超級英雄("神奇女俠")

在這個例子中,我們將 英雄 變量與不同的超級英雄名字進行匹配。_ 情況是我們的預設情況,用於捕獲任何未知的英雄。

Match 聲明中的組合案例

有時,我們希望用相同的代碼處理多個模式。Python 為我們提供了支持!

def 判定數字(數):
match 數:
case 0:
print("零是一個獨特的數字!")
case 1 | 2 | 3:
print("這是一個小的正數。")
case -1 | -2 | -3:
print("這是一個小的負數。")
case _:
print("這是一個較大的數字。")

判定數字(2)
判定數字(-2)
判定數字(100)

在這裡,我們使用 | 運算符來組合案例。這就像在普通英語中說 "或" 一樣。

Match-Case 聲明中的列表作為參數

match-case 聲明不僅適用於簡單的值,它還可以處理像列表這樣的複雜結構!

def 分析坐標(點):
match 點:
case [0, 0]:
print("原點")
case [0, y]:
print(f"Y軸在 y = {y}")
case [x, 0]:
print(f"X軸在 x = {x}")
case [x, y]:
print(f"點在 ({x}, {y})")
case _:
print("不是有效的二維點")

分析坐標([0, 0])
分析坐標([5, 0])
分析坐標([3, 4])
分析坐標([1, 2, 3])

這個例子展示了我們如何對列表模式進行匹配。這就像給你的代碼 X射線視野一樣,可以看到列表內部!

在 "Case" 子句中使用 "if"

有時我們需要在我們的匹配中進行更精準的操作,我們可以添加使用 if 的守護條件:

def 類別年齡(年齡):
match 年齡:
case n if n < 0:
print("時光旅行者警報!檢測到負年齡。")
case n if n < 13:
print("你是個孩子。享受你的童年吧!")
case n if n < 20:
print("歡迎來到青少年時代!")
case n if n < 65:
print("成年生活,我們來了!")
case _:
print("智慧隨著年齡而來。你充滿了它!")

類別年齡(8)
類別年齡(15)
類別年齡(30)
類別年齡(70)

在這裡,我們使用 if 條件進一步精煉我們的案例。這就像給你的 match 聲明一個放大鏡!

實際應用

現在我們已經涵蓋了基礎知識,讓我們來看看一個更複雜的例子,它結合了 match-case 聲明的各種方面:

def 處理命令(命令):
match 命令.split():
case ["quit"]:
print("退出程序。再見!")
return False
case ["hello" | "hi" | "hey", 名字]:
print(f"你好,{名字}!很高興見到你。")
case ["add", *數字] if all(n.isdigit() for n in 數字):
結果 = sum(int(n) for n in 數字)
print(f"總和是:{結果}")
case ["multiply", *數字] if all(n.isdigit() for n in 數字):
結果 = 1
for n in 數字:
結果 *= int(n)
print(f"乘積是:{結果}")
case _:
print("我不理解那個命令。")
return True

while True:
使用者輸入 = input("輸入一個命令:")
if not 處理命令(使用者輸入):
break

這個例子演示了一個可以處理各種輸入類型的命令處理器:

  • 它可以退出程序
  • 它可以歡迎用戶
  • 它可以添加或乘以數字
  • 它可以妥善處理未知的命令

match-case 聲明在這種情況下閃閃發光,我們需要清晰地處理多種輸入類型。

結論

match-case 聲明是您的 Python 工具箱中的一項強大工具。它在處理多個條件時可以讓代碼更具可讀性和可維護性。記住,就像任何工具一樣,關鍵在於在正確的情況下使用它。不要在簡單的 if-else 可以解決的地方強行使用它,但是在需要處理複雜模式匹配情況時請擁抱它。

隨著您繼續 Python 的旅程,您會發現越來越多的情況下,match-case 聲明可以簡化您的代碼並使其更具表達性。編程愉快,願您的匹配永遠找到完美的案例!

快速參考表

特性 示例
基本Match-Case match 值: case 模式: ...
預設情況 case _: ...
組合案例 case 模式1 | 模式2: ...
列表匹配 case [x, y]: ...
守護條件 case 模式 if 條件: ...

記住,練習成就完美。所以放手去做,嘗試這些模式,看著您的 Python 技能飛昇!

Credits: Image by storyset