Python 进阶:掌握switch语句扩展

1. switch语句的概述

switch语句是一种多分支选择结构,用于基于不同的情况执行不同的代码块。它通常用于处理多个明确的、互斥的条件,每个条件对应一个case子句。与if-else语句相比,switch语句在处理多个明确值的情况时更加直观和易读。

1.1  switch语句的语法

基本的switch语句语法如下:

switch (expression) {  
    case constant1:  
        // 代码块1  
        break;  
    case constant2:  
        // 代码块2  
        break;  
    // ... 可以有多个case子句  
    default:  
        // 默认代码块  
        break;  
}
  • switch(expression)句:switch关键字后面跟着一个表达式,该表达式的值将与每个case子句后面的常量进行比较。
  • case子句:case子句定义了要比较的值和相应的代码块。case关键字后面跟着一个常量,表示要比较的值。当switch表达式的值与case常量相匹配时,将执行该case下的代码块。break关键字用于退出switch语句,防止代码继续执行下一个case。多个case子句可以连续列出,以便处理多个值。
  • default子句:default子句是switch语句的可选部分,用于处理没有匹配的case的情况。当switch表达式的值与任何case常量都不匹配时,将执行default子句下的代码块。
  • 1.2  switch语句的限制

  • 在某些编程语言中,switch语句只能用于整数或枚举类型。
  • case常量必须是明确的、互斥的值,不能是范围或表达式。
  • 1.3  switch语句的优缺点

    优点:

  • 代码结构清晰,易于阅读和维护。
  • 对于处理多个明确值的情况,比if-else语句更加直观。
  • 缺点:

  • 对于复杂条件或范围判断,可能不如if-else语句灵活。
  • 在某些编程语言中,对数据类型和支持的操作有所限制。
  • 1.4  示例和实际应用 

    int day = 3;  
    switch (day) {  
        case 1:  
            printf("Monday");  
            break;  
        case 2:  
            printf("Tuesday");  
            break;  
        case 3:  
            printf("Wednesday");  
            break;  
        case 4:  
            printf("Thursday");  
            break;  
        case 5:  
            printf("Friday");  
            break;  
            
        default:  
            printf("Other day");  
            break;  
    }

     上述示例中,根据day的值,打印出相应的星期几。

    2. Python 中的 switch 语句实现

    在 Python 中,并没有像其他语言(如 C、C++、Java 或 JavaScript)那样的传统 switch 语句。然而,Python 通过使用字典(dictionaries)和 if-elif-else 语句可以实现类似的功能。

    2.1  使用字典(Dictionaries)

    Python 字典可以用来模拟 switch 语句。每个 case 可以与字典中的一个函数或值相关联。下面是一个例子:

    def case_monday():
        return 'Today is Monday'
    
    def case_tuesday():
        return 'Today is Tuesday'
    
    def case_wednesday():
        return 'Today is Wednesday'
    
    def case_default():
        return 'Today is some other day'
    
    # 创建一个字典,将星期几映射到它们各自的函数
    weekday_functions = {
        'Monday':case_monday,
        'Tuesday':case_tuesday,
        'Wednesday':case_wednesday,
        'case_default':case_default
    }
    
    # 获取当前日期是星期几(为了演示目的)
    import datetime
    today = datetime.datetime.today().strftime('%A')
    
    # 根据星期几调用相应的函数
    func = weekday_functions.get(today, case_default)
    print(func())

    在这个例子中,我们有一个名为 weekday_functions 的字典,它将星期几映射到各自函数。字典的 get 方法用于检索与当前星期几相关联的函数。如果星期几不在字典中,则默认使用 case_default 函数。

    2.2  使用 if-elif-else 语句

    对于更简单的情况,您可以使用 if-elif-else 结构来实现类似的功能:

    import datetime
    weekday = datetime.datetime.today().strftime('%A')
    
    if weekday == 'Monday':
        print('今天是星期一')
    elif weekday == 'Tuesday':
        print('今天是星期二')
    elif weekday == 'Wednesday':
        print('今天是星期三')
    else:
        print('今天是其它日子')

     

    在这个例子中,我们根据 weekday 的值使用 if-elif 语句来检查每个可能的情况。如果找到匹配项,则执行相应的代码块。如果没有找到匹配项,则执行 else 块。

    字典提供了一种更简洁的方式来处理多个情况,而 if-elif-else 结构对于初学者来说通常更容易理解和编写。选择哪种方法取决于您的具体需求和代码的可读性。

    作者:我自纵横2023

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 进阶:掌握switch语句扩展

    发表回复