[問題] 仿造switch case

看板Python作者時間16年前 (2009/07/25 01:16), 編輯推噓3(3015)
留言18則, 6人參與, 最新討論串1/1
原來的程式(c++) char answer; cin >> answer; switch( answer ) { case 'Y': case 'y': cout<<"Yes"<< endl; break; case 'n': case 'N': cout<<"No"<< endl; break; default: cout<<"do nothing"<<endl; } 想要用python來模仿這個功能 但許多部份卻不知道怎麼下手 如case 'Y' 和 case 'y' 可以用同一個敘述來表示,卻不知道怎麼寫 default的功能也是不知道如何實做 目前敝人撰寫的程式如下 answer=str(raw_input("intput(y/n):")) result = { 'y': 'Yes', 'Y': 'Yes', 'n': 'No', 'N': 'No' }[answer] print result 請各位指點一下,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.18.114

07/25 01:23, , 1F
answer.lower() 只留小寫就好
07/25 01:23, 1F

07/25 01:42, , 2F
感謝樓上的,現在差default
07/25 01:42, 2F

07/25 01:53, , 3F
try: result[answer]
07/25 01:53, 3F

07/25 01:54, , 4F
except: print "do nothing"
07/25 01:54, 4F

07/25 02:10, , 5F
謝謝,這次完成了,不過看起來很怪就對了
07/25 02:10, 5F

07/25 02:11, , 6F
失去switch case的味道..
07/25 02:11, 6F

07/25 07:36, , 7F
可以使用 if (case1) elif (case2) else (default)
07/25 07:36, 7F

07/25 07:37, , 8F
來模仿 switch
07/25 07:37, 8F

07/25 15:20, , 9F
我覺得 if else 就很好用啦..不知道 switch 有什麼特殊的
07/25 15:20, 9F

07/25 16:04, , 10F
其實純粹是練習,當初學java也是把c++的code改成java
07/25 16:04, 10F

07/25 16:05, , 11F
不過這樣改下來發覺switch作不出來...
07/25 16:05, 11F

07/26 01:10, , 12F
switch 可以用 dict 實作
07/26 01:10, 12F

07/27 13:03, , 13F
switch是從第一個case開始比的吧, 那dict應該會有比較
07/27 13:03, 13F

07/27 13:03, , 14F
好的效能?
07/27 13:03, 14F

07/27 16:47, , 15F
dict 應該比較快,不過switch 結果是 code..dict你要放
07/27 16:47, 15F

07/27 16:47, , 16F
code 然後再apply (還是 eval) 嗎?
07/27 16:47, 16F

07/27 18:53, , 17F
funcDict["a"]() # funcDict[key] 回傳函數(指標)
07/27 18:53, 17F

07/27 22:56, , 18F
哦說得是..^^
07/27 22:56, 18F
文章代碼(AID): #1AQUnbNs (Python)
文章代碼(AID): #1AQUnbNs (Python)