Python本身并不提供Switch的语法功能,为了能够解决类似switch分支需求的问题,我们可以使用字典代替实现。 
解决思路:

  1. 利用字典取值的get方法的容错性,处理switch语句中的default情况
  2. 设置字典的vlaue为对应方法名,来代替switch语句中的代码块
  3. 为不同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')
 

最新文章

  1. O365(世纪互联)SharePoint 之使用列表库发布新闻
  2. 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】
  3. Codeforces Round #257 (Div. 2)
  4. 应用代理 socket TCP协议 的资料
  5. IBatis一对多查询
  6. artDialog测试
  7. Nice是如何做iOS客户端架构的?
  8. 机器学习 —— 概率图模型(学习:CRF与MRF)
  9. Spark Tungsten揭秘 Day1 jvm下的性能优化
  10. [NOI2005] 维护数列
  11. 解决C盘中的文件不能修改问题
  12. 剑指Offer——好未来视频面知识点储备+面后总结
  13. Spring,@Controller,@RequestMapping, @ResponseBody,@RequestParam
  14. PMBook - 上课体会
  15. pycharm中连接公网IP方法
  16. 给出随机存储器(RAM)和只读存储器(ROM)的差别
  17. Eclipse同时显示两个编辑窗口
  18. 2. Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现(转)
  19. c# 仿微信二维码生成
  20. Codeforces 822C Hacker, pack your bags! - 贪心

热门文章

  1. ERROR: dump failed because assets could not be loaded
  2. JS----addEventListener()
  3. php优化-》常用到的部分优化
  4. MySql数据库常用语句汇总
  5. sql注入(一)
  6. 七 shelve模块
  7. rancher2 挂载ceph-rbd
  8. vue element upload上传、清除等
  9. WAS 添加数据源
  10. unity美少女动作RPG游戏源码Action-RPG Starter Kit v5.0a