Python 用字典映射代替C语言switch case语句

Python 用字典映射代替C语言switch case语句

python没有自己的swith case 语句,官方推荐的是使用if else 语句实现,但是用字典的映射方法也可以实现

一、C语言的使用:

colour =1
switch(colour){
  case 0 : colour_name='Red';
        break;
  case 1 : colour_name='Yellow';
        break;
  case 2 : colour_name='Blue';
        break;
  case 3 : colour_name='White';
        break;
  default: colour_name='Black';
        break;
}

解释:当colour=1的时候,匹配到case = 1,对应的值是:“Yellow”,如果colour=6,在colour没有对应的值,那么就执行default所对应的值"Black"。

二、Python字典映射:

colour = 1

COLOUR_MAP = {
    0: 'Red',
    1: 'Yellow',
    2: 'Blue',
    3: 'White'
}

# 不推荐使用该方法,当Key不存在会报错
# colour = COLOUR_MAP[colour]

# 推荐使用此方法
colour = COLOUR_MAP.get(colour, 'Black')
print colour

# 输出结果:Yellow

解释:当colour=1的时候,对应的值为"Yellow"。若key不存在,返回默认值"Black"

三、将字典映射的值更改为函数:

def get_add(x, y):
    """加法"""
    return x + y


def get_mul(x, y):
    """乘法"""
    return x * y


def get_sub(x, y):
    """减法"""
    return x - y


def get_div(x, y):
    """除法"""
    return x / y


# 字典的映射
COUNT_MAP = {
    0: get_add,
    1: get_mul,
    2: get_sub,
    3: get_div
}

count = 3

result = COUNT_MAP.get(count, None)

if result:
    result = result(10, 2)
    print '结果为:', result

else:
    print 'Key不存在'

# 输出结果:结果为: 5
# 输入的count = 3, 调用的是get_div()函数, 若要输入count = 6,那么输出结果就是"Key不存在"

用字典映射的好处就是可以让代码更简洁,看起来更优雅,维护起来更方便

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中没有内置的switch/case语句。与Java、C/C++等语言不同,Python中没有直接提供switch/case语句的功能。但是,我们可以通过几种方法来实现类似功能的结构。 第一种方法是使用if...elif...elif...else语句来实现类似switch/case的功能。将需要判断的条件依次放在if和elif语句中,根据条件执行相应的代码块。最后,可以使用else语句来处理默认情况。虽然这种方法比较简单,但是当分支较多或需要频繁修改时可能不够方便和易于维护。 第二种方法是使用字典来实现类似switch/case的功能。可以将不同的条件作为字典的键,对应的代码块作为字典的值。然后,可以通过检索字典来执行相应的代码块。这种方法非常灵活,可以在运行时方便地添加或删除switch/case选项。 第三种方法是在类中使用调度方法来实现类似switch/case的功能。可以将不同的条件作为方法的参数,根据不同的条件执行相应的方法体。这种方法适用于需要在类中多次使用相同的条件判断。 综上所述,尽管Python中没有直接提供switch/case语句,但可以使用if...elif...elif...else语句字典或调度方法来实现类似的功能。具体选择哪种方法取决于你的需求和代码结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python switch/case语句实现方法](https://blog.csdn.net/l460133921/article/details/74892476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值