作者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