© Maria Vonotna/Shutterstock.com

通常,編程旨在使復雜問題盡可能簡單。通過這種方式,switch case 對於根據相關值或變量執行特定代碼非常有用。在 Python 中,沒有 switch case,所以我們必須使用替代方案。今天了解如何在 Python 中實現 switch case。

什麼是 Switch Case?

簡單地說,switch case 語句允許您的程序根據變量的值執行不同的功能或聲明。通過這種方式,switch case 語句會計算值並將結果與您已放置的一些預定義規則進行比較。在每種情況下,如果值與 switch case 匹配,則將執行特定操作。如果沒有匹配的 switch case,您還可以設置要執行的默認代碼。

雖然 Python 沒有 switch case,但許多其他編程語言都有。因此,讓我們來說明 switch case 在 C 中是如何工作的:

switch (expression) { case value1: #code to execute if expression=value1 break; case value2: #code to execute if expression=value2 break; case value3: #code to execute if expression=value3 break;默認值:#code to execute if expression matches none of the above cases break;

比較簡單吧?不幸的是,我們必須做更多的工作才能在 Python 中實現它。實際上有幾種不同的方法可以實現類似於 switch case 的功能,所以,讓我們開始吧。

如何使用 If-elif-else 語句實現 Switch Case

一個方法是使用“if”和“else”語句根據輸入執行特定功能。這實際上可以用兩種方式來描述。第一個方法是這樣的:

color=’Blue’if color==’Red’: print(‘color is Red’) elif color==’Green’: print(‘color is Green’) elif color==’Yellow’: print(‘color is Yellow’) elif color==’Blue’: print(‘color is Blue’) else: print(‘Color is undetermined’)

輸入,或“顏色” , 針對這些條件中的每一個進行測試,以查看它匹配哪個條件。在這種情況下,顏色顯然是藍色的,所以預期的輸出是“color is Blue”。這正是我們在嘗試這段代碼時看到的。

用If-elif-else語句實現的switch case算法。

©”TNGD”.com

如何使用字典映射實現Switch case

字典只是一組非結構化的數據值,具有鍵值對。這些類似於電子表格中的標題,例如“姓名”、“身高”和“體重”。每個鍵都與數據值配對。這樣,我們就可以使用一種 switch case 函數從字典中返回特定的值。如下所示:

def switch_case(argument): switcher={“Red”:”RED”,”Blue”:”BLUE”,”Green”:”GREEN”} return switcher.get(argument,”Invalid argument”) if__name__==”__main__”: argument=”Green”print(switch_case(argument))

在這種情況下,我們將函數“switch_case”定義為一個接受參數的函數。

字典定義為“switcher”,包含鍵值對。鍵代表大寫的顏色名稱,值代表所有大寫的顏色名稱。

使用“get”函數從字典中返回參數鍵對應的值。否則,返回參數“無效參數”。

由於輸入參數是“Green”,我們得到“GREEN”作為輸出。

“if__name==“__main__ ””行只是表示代碼僅在直接運行腳本時執行。

字典映射用於實現switch case。

©”TNGD”.com

如何使用類實現Switch case

在 Python 中實現 switch case 的最後一種方法是使用類。這基本上是一個模板,用於製作具有已定義屬性和方法的對象。例如,一個名為“ID”的類可以有兩個屬性,“Height”和“Weight”,以及獲取這些值的方法,如“get_height()”和“get_weight()”。例如,我們可以將類定義為“switchcase”,實現流程如下:

class switch_case: def month(self, year): default=”Incorrect month”return getattr(self,’case_’+ str (年),lambda:默認)() def case_1(self):返回“2001” def case_2(self):返回“2002” def case_3(self):返回“2003” my_switch=switch_case() print(my_switch.month (1)) print(my_switch.month(3))

首先,我們將“switch_case”定義為實現switch case的函數。

在此之後,該方法被稱為“month()” ,它採用“year”參數並使用不同的參數“1”和“3”調用“month”方法。當以參數“1”調用該方法時,它對應於“case_1()”類方法,輸出結果“2001”。當調用“3”的參數時,輸出為字符串值“2003”。

有關此代碼在實踐中的工作原理,請參見屏幕截圖。

Switch case 使用類實現。

©”TNGD”。 com

總結

雖然 switch case 沒有明確包含在 Python 中,但有幾種方法可以重新創建這個過程。總的來說,這些包括使用字典映射、實現類函數或使用 if-elif-else 語句。在所有情況下,根據給定的參數執行特定代碼,並根據 switch 語句返回特定值。

How To Use Switch Case In Python FAQs(常見問題)

哪些編程語言支持switch case語句?

支持switch case語句的編程語言有很多,比如C、C++、Java、JavaScript、Ruby、Swift和蟒蛇。然而,Python 沒有顯式的 switch case 函數,但是可以通過這裡描述的各種方法來實現該功能。

switch case 語句是否比 if-else 語句更高效?

不總是。 switch case 語句的效率取決於 case 的數量以及代碼的實現方式。如果給定表達式只有幾個可能的值,則 if-else 語句可能更有效。

如果值無法與任何情況匹配會怎樣?

如果所有 case 都不匹配相關值,則執行默認代碼塊。

在 switch case 語句中可以使用哪些表達式?

這取決於您使用的編程語言,但當然可以使用除整數或字符串值以外的類型的表達式,例如字符或枚舉。

您可以對同一代碼使用多個案例嗎?

在大多數情況下,可以。當您想對一個表達式的多個值使用相同的代碼時,這會很有幫助。

By Maxwell Gaven

我在 IT 行業工作了 7 年。 觀察 IT 行業的不斷變化很有趣。 IT 是我的工作、愛好和生活。