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"))