看板 Python 關於我們 聯絡資訊
原來的程式(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
StubbornLin:answer.lower() 只留小寫就好 07/25 01:23
dreamroyc:感謝樓上的,現在差default 07/25 01:42
Lucemia:try: result[answer] 07/25 01:53
Lucemia:except: print "do nothing" 07/25 01:54
dreamroyc:謝謝,這次完成了,不過看起來很怪就對了 07/25 02:10
dreamroyc:失去switch case的味道.. 07/25 02:11
Lucemia:可以使用 if (case1) elif (case2) else (default) 07/25 07:36
Lucemia:來模仿 switch 07/25 07:37
huggie:我覺得 if else 就很好用啦..不知道 switch 有什麼特殊的 07/25 15:20
dreamroyc:其實純粹是練習,當初學java也是把c++的code改成java 07/25 16:04
dreamroyc:不過這樣改下來發覺switch作不出來... 07/25 16:05
yungyuc:switch 可以用 dict 實作 07/26 01:10
rexrainbow:switch是從第一個case開始比的吧, 那dict應該會有比較 07/27 13:03
rexrainbow:好的效能? 07/27 13:03
huggie:dict 應該比較快,不過switch 結果是 code..dict你要放 07/27 16:47
huggie:code 然後再apply (還是 eval) 嗎? 07/27 16:47
rexrainbow:funcDict["a"]() # funcDict[key] 回傳函數(指標) 07/27 18:53
huggie:哦說得是..^^ 07/27 22:56