python 数据类型 之 利用 dict 模仿 switch语句功能
Python本身并不提供Switch的语法功能,为了能够解决类似switch分支需求的问题,我们可以使用字典代替实现。
解决思路:
- 利用字典取值的get方法的容错性,处理switch语句中的default情况
- 设置字典的vlaue为对应方法名,来代替switch语句中的代码块
- 为不同key设置相同的value,模拟switch中穿透
def taskForSunday():
print("今天休息")
def taskForRest():
print("今天休息")
def taskForChinese():
print("今天上语文课")
def taskForMath():
print("今天上数学课")
def taskForEnglish():
print("今天上英语课")
def taskForDefault():
print("输入错误啦。。。。")
switchDic = {"Sunday":taskForRest,
"Monday":taskForChinese,
"Tuesday":taskForMath,
"Wednesday":taskForEnglish,
"Tursday":taskForEnglish,
"Friday":taskForEnglish,
"Saturday":taskForRest
}
1.测试取值
通过get获取字典key对应的方法后,又添加了个括号,这样会执行得到的方法
day1 = "Monday"
switchDic.get(day1,taskForDefault)() #打印:今天上语文课
2.测试穿透
##Wednesday,Tursday,Friday三个的效果相同
day2 = "Friday"
switchDic.get(day2,taskForDefault)() #打印:今天上英语课
3.测试Deault效果
#字典的get方法第二个参数是默认值,即通过key值不能找到value时,返回默认值
#这里使用了自定义函数的函数名:taskForDefault,用于实现switch的defalut功能
day3 = "天气不错哦"
switchDic.get(day3,taskForDefault)() #打印:输入错误啦。。。。
class Switch: switch = None
@classmethod def switch(cls, day): switchDic = {"Sunday": cls.casetaskForRest, "Monday": cls.casetaskForChinese, "Tuesday": cls.casetaskForMath, "Wednesday": cls.casetaskForEnglish, "Tursday": cls.casetaskForEnglish, "Friday": cls.casetaskForEnglish, "Saturday": cls.casetaskForRest } cls.switch = switchDic.get(day, cls.casetaskForDefault)() return cls.switch
@staticmethod def casetaskForSunday(): print("今天休息")
@staticmethod def casetaskForRest(): print("今天休息")
@staticmethod def casetaskForChinese(): print("今天上语文课")
@staticmethod def casetaskForMath(): print("今天上数学课")
@staticmethod def casetaskForEnglish(): print("今天上英语课")
@staticmethod def casetaskForDefault(): print("输入错误啦。。。。")
Switch.switch('Sunday')
python 数据类型 之 利用 dict 模仿 switch语句功能的更多相关文章
- python利用dict模拟switch
pytho本身并未提供switch语句,但可以通过dict来模拟switch, #方法1 def add(x,y): return x+y def dec(x,y): return x-y def m ...
- python初步学习-python数据类型-字典(dict)
字典 字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起.注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息. 注意,你只 ...
- python数据类型之字典(dict)和其常用方法
字典的特征: key-value结构key必须可hash,且必须为不可变数据类型.必须唯一. # hash值都是数字,可以用类似于2分法(但比2分法厉害的多的方法)找.可存放任意多个值.可修改.可以不 ...
- Python—数据类型之字典(Dict)
其它数据类型转成字典 arr1 = ['jack', 'rose', 'marry'] arr2 = [68, 85, 66] dict1 = dict(zip(arr1, arr2)) print( ...
- Python数据类型--字典(dict)
Python中的字典是键值对(key-value)的无序集合.每个元素包含"键"和"值"两部分,这两部分之间使用冒号分隔,表示一种对应关系.不同元素之间用逗号分 ...
- python小练习,利用dict,做一个简单的登录。
'''利用字典实现登录'''users=[{'username':'jerry','pwd':'123456'},{'username':'tom','pwd':'1'}] def login(use ...
- Python学习 之 switch语句
1.python并没有提供switch语句,python可以通过字典实现switch语句的功能,实现方法分为两步 —首先,定义一个字典 —其次,调用字典的get()获取相应的表达式 通过字典调用函数 ...
- 利用switch语句计算特定的年份的月份共有几天。
//利用switch语句计算特定的年份的月份共有几天. let year =2015 let month =2 //先判断闰年中二月份的情况 ifmonth ==2 { if (year %400 = ...
- Java中的switch语句后面的控制表达式的数据类型
Java中的switch语句后面的控制表达式的数据类型 1.byte 2.char 3.short 4.int 5.枚举类型 6.Java 7允许java.lang.String类型
随机推荐
- thinkphp的PHPexecl表格样式设置
/** * 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要 * 打开对应行的注释. * 如果使用 Excel5 ,输出的内容应该是GBK编码. */ //require_o ...
- 创建DLL动态链接库——模块定义法(def)
DLL模块定义法(Module-Definition File,即DEF):在VS家族IDE中,根据提示新增.def文件,如下: LIBRARY 关键字; mytestDll 库名; DLL_ADD ...
- Struts 框架
struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...
- linux内核配置 kbuild
Linux 内核配置机制 http://blog.csdn.net/dianhuiren/article/details/6917132 linux kbuild文档 http://blog.chin ...
- phpexcel 导入超过26列时的解决方案
$highestColumn = $sheet->getHighestColumn(); // 取得总列数 ++$highestColumn; for ($row = 5; $row <= ...
- mysql查询记录修改时间于现在大于30分钟
(unix_timestamp(now())-`updatetime`)>1800
- I/O复用之epoll
epoll 简介 epoll是为处理大批量句柄而作了改进的poll,它是在2.5.44内核中被引进的. 相关函数调用 int epoll_create(int size); 创建一个epoll的句柄. ...
- Attention Please
关于BJJ与Matlab的学习时间安排在五六日晚间: 其余一切重心在学术!
- git config --global user.email
加上这个就ok
- VM虚拟机 安装linux系统
首先需要下载VMware10 和CentOS-6.4,我这边提供了百度网盘,可供下载链接:https://pan.baidu.com/s/1vrJUK167xnB2JInLH890fw 密码:r4jj ...