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类型
随机推荐
- LeetCode OJ 15. 3Sum
题目 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...
- spring boot 集成Thymeleaf
- C# 保证数据长度相同
/// <summary> /// 保证数据长度相同 /// </summary> /// <param name="obj"></par ...
- SpringCloud---Feign上传下载详解
1.使用原因 公司最近做的项目在用SpringCloud,涉及到了上传.但是Feign本身是不支持文件类型的.所以这里把上传下载的实现分享一下. 2.所需配置 这是自己实现的一个formEncoder ...
- 04_web基础(四)之servlet详解
16.17.18.servlet生命周期 javax.servlet.Servlet接口方法:public String getServletInfo():获取Servlet相关信息(作者,版权,版本 ...
- 1.1、CDH 搭建Hadoop在安装之前(配置网络名称)
重要: CDH需要IPv4.不支持IPv6.提示:粘合时,请使用bond0 IP地址,因为它代表所有聚合链接. 按如下方式配置群集中的每个主机,以确保所有成员可以相互通信: 将主机名设置为唯一名称(不 ...
- appium+python自动化测试
appium+python自动化测试 标签(空格分隔): appium 获取APP的包名 1.aapt即Android Asset Packaging Tool,在SDK的build-tools目录下 ...
- BOM 表
';--查看BOM创建日期时间 SELECT * FROM SAPSR3.ZSTPO_OUT2011_1@SAP_SEP; SELECT * FROM SAPSR3.ZSTPO_OUT2012_1@S ...
- telnet ip/域名 端口 是否成功
有时候会ping ip 通,但是telnet不通,可能端口未开. telnet不成功,则显示不能打开到主机的链接,链接失败 . telnet成功,则进入telnet页面(全黑的),证明端口可用.
- Django 的认识,题型
Django 的认识,面试题 链接:https://www.cnblogs.com/chongdongxiaoyu/p/9403399.html 1. 对Django的认识? #1.Django是走大 ...