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