python中如何进行switch

python中没有switch语句,如果需要实现类似switch的操作,可以使用if及elif进行判断。 其实c语言等中的switch语句只能对整型或枚举型类型进行操作。

什么是表驱动

表驱动法是一种编程模式,从数值表里面查找信息而不是使用逻辑判断语句(if…else…switch), 当是很简单的情况时,用逻辑if语句很简单,但如果逻辑很复杂,再使用逻辑语句就显得非常复杂, 并且代码又臭又长。

比如查找一年中每个月份的天数,如果用表驱动法,完全不需要写一堆if…else…语句, 直接把每个月份的天数存到一个数组里就行了,然后取值的时候直接下标访问,再针对二月 判断一下闰年即可。

例如我们取英文缩写的每个月的天数。例如参数”May”, 返回5月的天数31,我们来用两种方式 分别实现,这里不考虑瑞年情况。

非表驱动方式:

def monthhasDays1(month):
    if(month=="Jan"):
        return 31
    elif(month=="Feb"):
        return 28
    elif(month=="Mar"):
        return 31
    elif(month=="Apr"):
        return 30
    elif(month=="May"):
        return 31
    elif(month=="Jun"):
        return 30
    elif(month=="Jul"):
        return 31
    elif(month=="Aug"):
        return 31
    elif(month=="sep"):
        return 30
    elif(month=="Oct"):
        return 31
    elif(month=="Nov"):
        return 30
    elif(month=="Dec"):
        return 31
    else:
        return 0

表驱动方式:

ManthDat = {
        "Jan":31, "Feb":28, "Mar":31, "Apr":30, "May":31, "Jun":30,
        "Jul":31, "Aug":31, "Sep":30, "Oct":31, "Nov":30, "Dec":31};
def monthhasDays2(month):
    return ManthDat.get(month, 0)

测试

if(__name__=="__main__"):
    print(monthhasDays1("Jan"))
    print(monthhasDays1("aaa"))
    print(monthhasDays2("Jan"))
    print(monthhasDays2("aaa"))