那有什麼方式能夠實現呢?
首先,先來複習Case語句吧
那今天就依照下面的功能來做範例
方法1
其中一個方法就是眾所皆知的 if ... elif ... else
範例如下:
這樣的方法非常直觀,缺點就是每個判斷式都要寫state == ?
如果要仿造出其他程式語言的case語句,也是可行的
在那之前要先來學學Python中的字典(dict)
字典(dict)
輸出 :
建立字典只要記住格式與由左而右做查詢的規則即可
直接使用查詢的方式缺點的缺點是,當你丟入沒有設定的值,會直接跳Error
所以這時候應該使用這個方法 :
第一個位置:要丟入的值
第二個位置:當你丟入沒有設定的值,會回傳這個位置的東西
所以我們把這個方法做成副程式方便調用 :
稍微整理一下比較好看 :
進階整理 :(執行結果一樣)
這邊主要是把副程式換個名字,然後不給字典名稱(我們之前把字典取名為state)
要看懂這邊的整理,後面會用到
可以看到似乎已經達到我們一開始講的功能了
但是有些人就有疑問了,人家的case不只有print的功能阿
所以再加以改造一下...
這樣在副程式裡面就可以打上任何你想執行的程式碼
應該會有人覺得這樣並沒有比較好維護
那這樣的方法存在優點嗎?
所以我測試了執行時間
為了更準確的測試,我把print改成pass,避免print時間影響到結果
可以看到方法1除了很直觀以外,執行時間也較短
但這樣的結果我並不滿意,為什麼華麗的用法反而有反效果
所以我稍微修改程式(預先建立字典)
還是輸了!
於是我再改!
看來網路上流傳的"實現case方法",除了美觀...應該也沒啥作用了
在此附上最終程式碼...
https://drive.google.com/file/d/1YnXfinZLRzVHSn6wg9RyxIfdwulX2BQn/view?usp=sharing
沒有留言:
張貼留言