日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Python指南之結(jié)構(gòu)化模式匹配:讓編程變得更簡單、更靈活

來源: 責(zé)編: 時間:2023-12-01 17:12:14 223觀看
導(dǎo)讀Python的結(jié)構(gòu)化模式匹配Python 3.10 版本引入了一項新功能,叫做結(jié)構(gòu)化模式匹配。這其實就是一種條件邏輯,可以讓我們根據(jù)不同的條件執(zhí)行不同的代碼。比如說,我想根據(jù)用戶的午餐訂單來顯示不同的消息:lunch_order = input(

Python的結(jié)構(gòu)化模式匹配

Python 3.10 版本引入了一項新功能,叫做結(jié)構(gòu)化模式匹配。這其實就是一種條件邏輯,可以讓我們根據(jù)不同的條件執(zhí)行不同的代碼。BKO28資訊網(wǎng)——每日最新資訊28at.com

比如說,我想根據(jù)用戶的午餐訂單來顯示不同的消息:BKO28資訊網(wǎng)——每日最新資訊28at.com

lunch_order = input("What would you like for lunch? ")match lunch_order:    case 'pizza':        print("Pizza time!")    case 'sandwich':        print("Here's your sandwich")    case 'taco':        print('Taco, taco, TACO, tacotacotaco!')    case _:        print("Yummy.")

在這里,程序會檢查 lunch_order 的值,并與不同的情況進行匹配。一旦找到匹配項,就會執(zhí)行相應(yīng)的代碼。比如用戶輸入 "pizza",程序就會顯示"Pizza time!"。BKO28資訊網(wǎng)——每日最新資訊28at.com

最后一個情況中的下劃線 _ 是一個通配符,可以匹配任何值。如果輸入的值沒有匹配到前面的任何一種,就會執(zhí)行這個通配符對應(yīng)的代碼。BKO28資訊網(wǎng)——每日最新資訊28at.com

或模式

在 Python 的模式匹配中,我們還可以用 or 模式來匹配多個可能的值。比如:BKO28資訊網(wǎng)——每日最新資訊28at.com

lunch_order = input("What would you like for lunch? ") match lunch_order:    # --snip--    case 'taco':        print('Taco, taco, TACO, tacotacotaco!')    case 'salad' | 'soup':        print('Eating healthy, eh?')    case _:        print("Yummy.")

在這個例子中,如果用戶輸入 "salad" 或 "soup",程序就會顯示 "Eating healthy, eh?"。BKO28資訊網(wǎng)——每日最新資訊28at.com

捕獲模式

首先,我們來看看怎么用Python來做一個午餐點餐的程序。我們的目的是,無論用戶輸入什么,我們都能給出一個回應(yīng)。看這個例子:BKO28資訊網(wǎng)——每日最新資訊28at.com

lunch_order = input("你想吃什么午餐?") match lunch_order:    # 這里還有其他代碼    case 'salad' | 'soup':        print('吃得健康哦!')    case order:        print(f"享受你的{order}。")

在這個代碼里,如果用戶輸入的不是我們列出的菜單上的東西,比如不是沙拉或湯,我們就用 case order: 這行來捕獲他們的輸入。這樣用戶輸入什么,我們就回應(yīng)什么。BKO28資訊網(wǎng)——每日最新資訊28at.com

部分捕獲

我們還可以只捕獲用戶輸入的一部分。比如說,我們想讓程序能處理類似“草莓冰淇淋”這樣的輸入,我們可以這樣寫:BKO28資訊網(wǎng)——每日最新資訊28at.com

lunch_order = input("你想吃什么午餐?")if ' ' in lunch_order:    lunch_order = lunch_order.split(maxsplit=1)match lunch_order:    case (flavor, 'ice cream'):        print(f"這是你的成熟{flavor}午餐。")    # 這里還有其他代碼

這段代碼會把輸入分成兩部分,如果第二部分是"ice cream",第一部分就會被捕獲為 flavorBKO28資訊網(wǎng)——每日最新資訊28at.com

注意點

使用捕獲模式時,有一個小陷阱。在模式中的所有沒有修飾的變量名,都會被用來捕獲值。這意味著,如果你想使用某個變量的值,你需要使用點操作符來指定它。看這個例子:BKO28資訊網(wǎng)——每日最新資訊28at.com

class Special:    TODAY = 'lasagna'lunch_order = input("你想吃什么午餐?")match lunch_order:    case Special.TODAY:        print("今天的特餐很棒!")    case 'pizza':        print("披薩時間!")

守衛(wèi)語句

最后,我想向你們展示一個叫做“守衛(wèi)語句”的技巧。這是一個額外的條件語句,只有在滿足這個條件時,模式才會匹配。比如說,我們想讓程序能特別處理“冰淇淋”這個詞,我們可以這樣寫:BKO28資訊網(wǎng)——每日最新資訊28at.com

class Special:    TODAY = 'lasagna'lunch_order = input("你想吃什么午餐?")match lunch_order:    # 這里還有其他代碼    case 'salad' | 'soup':        print('吃得健康哦!')    case ice_cream if 'ice cream' in ice_cream:        flavor = ice_cream.replace('ice cream', '').strip()        print(f"這是你的成熟{flavor}午餐。")    case order:        print(f"享受你的{order}。")

在這個例子里,如果用戶輸入的詞里包含"ice cream",程序就會特別處理。BKO28資訊網(wǎng)——每日最新資訊28at.com

希望這個小教程對你們有幫助!通過這些例子,你可以看到Python模式匹配的強大之處,以及它如何幫助我們更好地處理數(shù)據(jù)和用戶的輸入。BKO28資訊網(wǎng)——每日最新資訊28at.com

Python模式匹配總結(jié)

在Python中,模式匹配有點像“魔法”,很容易讓人愛不釋手。但記住,不要濫用哦!結(jié)構(gòu)化模式匹配特別適合在多種可能的模式中檢查一個主題,但就像午餐訂單中的“冰淇淋”情形,當主題的可能值變得復(fù)雜時,它的局限性就顯現(xiàn)出來了。如果你不確定是否需要在某個場景使用結(jié)構(gòu)化模式匹配,那就堅持使用條件語句吧。BKO28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-35846-0.htmlPython指南之結(jié)構(gòu)化模式匹配:讓編程變得更簡單、更靈活

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 你會在瀏覽器中打斷點嗎?我會!

下一篇: 系統(tǒng)調(diào)用:計算機中的“服務(wù)員”

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 临武县| 上栗县| 玛多县| 大新县| 晋城| 什邡市| 大洼县| 措勤县| 延安市| 新营市| 龙陵县| 江安县| 鹤山市| 台州市| 阜平县| 进贤县| 清原| 济南市| 台东市| 丰镇市| 普定县| 星子县| 伊川县| 托里县| 保定市| 湖北省| 宜良县| 华池县| 延庆县| 库伦旗| 靖宇县| 德化县| 桐柏县| 西峡县| 台安县| 密云县| 丰都县| 绥化市| 论坛| 洪雅县| 诏安县|