精华内容
下载资源
问答
  • python为何没有switch语句?

    千次阅读 2014-01-09 21:14:01
    本来都没有留意,今天在写个小东西的时候,突然发现python好像没有switch语句?...如果你是把python作为入门编程语言的话,你可能不会在意python有没有switch语句,如果你在接触python前接触过其它的 语言比如说c

    本来都没有留意,今天在写个小东西的时候,突然发现python好像没有switch语句?然后感觉很纳闷,顺手网上搜一下,转篇文章和大家分享~

    原文地址:http://www.cnpythoner.com/post/80.html

    感谢原作者智慧!

    如果你是把python作为入门编程语言的话,你可能不会在意python有没有switch语句,如果你在接触python前接触过其它的
    语言比如说c,c++,php等,你就会觉的奇怪为什么python没有switch语句呢?

    我个人的猜想是python没有设置switch语句应该传承了它的大道之简的哲学思想,希望我们写程序处理问题尽量用简单
    高效的方法,用if else搞定问题,那如果它没有switch语句,而你又要处理这样的问题怎么办?

    举个例子来说明问题:

    switch age
    case '10':
    print 'age 10'

    case '20':
    print 'age 20'

    case '30':
    print 'age 30
    '

    .....
    我自己一般是用字典的方法里处理:

    list = {'10':'print age 10','20':'print age 20','30':'print 30','default':'print age 10'}

    age = '10'
    print list.get(age,'print age is deault')

    还有一些更好的方法老王我没想出来,如果大家有好的方法的话,可以留言补充上来。
    如果对python 控制语句感兴趣的朋友,可以看看python 控制语句这篇文章,希望对你有帮助!

    展开全文
  • 为什么Python没有switch或者case语句

    千次阅读 2020-02-07 19:55:56
    下面对于switch语句语法一些建议,但是对于是否以及如何进行范围测试还没有达成共识。 完整的细节和当前状态见 PEP 275。 对于需要从大量可能性中进行选择的情况,可以创建字典将case值映射到要调用的函数。 ...

    可以很容易地通过一系列的 if... elif... elif... else. 或者字典dict来代替switch case 语句

    下面对于switch语句语法有一些建议,但是对于是否以及如何进行范围测试还没有达成共识。

    完整的细节和当前状态见 PEP 275

    对于需要从大量可能性中进行选择的情况,可以创建字典将case值映射到要调用的函数。

    例如:

    def function_1(...):
        ...
    
    functions = {'a': function_1,
                 'b': function_2,
                 'c': self.method_1, ...}
    
    func = functions[value]
    func()

    对于调用对象上的方法,你可以进一步简化使用getattr()内置检索方法与特定的名称 :

    def visit_a(self, ...):
        ...
    ...
    
    def dispatch(self, value):
        method_name = 'visit_' + str(value)
        method = getattr(self, method_name)
        method()

    建议对方法名使用前缀,如本例中的 visit_。没有这样的前缀,如果值来自不可信的源,攻击者就可以调用对象上的任何方法。

    以上内容参考文档:Why isn’t there a switch or case statement in Python?

     

    -------用字典代替switch case default----------------------------------------------------------------------------------------------------------------------------------------------------------------------

     用字典代替其他语言的 switch case default 示例

    def isSunday():
        return 'Sunday'
    def isMonday():
        return 'Monday'
    def isTuesday():
        return 'Tuesday'
    def isWednesday():
        return 'Wednesday'
    def isThursday():
        return 'Thursday'
    def isFriday():
        return 'Friday'
    def isSaturday():
        return 'Saturday'
    def defaultday():
        return 'UnKnowDay, maybe is only for you'
    
    replaceswitch = {
        0: isSunday,
        1: isMonday,
        2: isTuesday,
        3: isWednesday,
        4: isThursday,
        5: isFriday,
        6: isSaturday,
    }
    
    days = input("输入数字0-6")
    day_name = replaceswitch.get(int(days), defaultday)()  # 第二个参数:当输入的内容不是字典中的key时所返回的内容,也就是其他语言中的default
    print(day_name)

     

    展开全文
  • Python没有switch语句关键字,但可以通过字典dict实现switch语句的功能,实现方法分为两步:首先,定义一个字典;其次,调用字典的get()获取相应的表达式 switch什么好处? 函数调用,通过字典调用函数{1:case1,...

    Python中的Switch语句实现

    switch语句

    switch语句用于编写多分支结构的程序,类似与if…elif…else语句
    switch语句表达的分之结构比if…elif…else语句表达的更清晰,代码的可读性更高

    Python中没有switch语句关键字,但可以通过字典dict实现switch语句的功能,实现方法分为两步:首先,定义一个字典;其次,调用字典的get()获取相应的表达式

    switch有什么好处?

    函数调用,通过字典调用函数{1:case1,2:case2}.get(x,lambda *arg,**key:)()

    case-通过if语句进行±*/运算

    def jia(x,y):
    	return x+y
    def jian(x,y):
    	return x-y
    def cheng(x,y):
    	return x*y
    def chu(x,y):
    	return x/y
    
    def operator(x,o,y):
    	if o=='+':
    		jia(x,y)
    	elif o=='-':
    		jian(x,y)
    	elif o=='*':
    		cheng(x,y)
    	elif o=='/':
    		chu(x,y)
    	else:
    		pass
    
    print(operator(2,'+',4))
    

    这样写函数,当执行除法操作时,前3次判断都是多余的,效率较低,if...elif...else语句天生会有优先级的区分

    用dict类型改写switch语句如下;

    operator={'+':jia,'-':jian,'*':cheng,'/':chu}
    print(operator['+'])
    <function jia at 0x00000000030F6400>
    >>> operator['+'](2,3)
    5
    >>> print(operator['+'](2,3))
    5
    >>> 
    

    根据dict字典类型数据的特性,如果没有对应[key],会报错,那我们可以改用dict.get()方法替换替换对key-value的获取,即switch判断。

    >>> print(operator.get('*')(5,3))
    15
    >>> 
    
    >>> def f(x,o,y):
    	print(operator.get(o)(x,y))
    
    >>> f(3,'*',9)
    27
    
    展开全文
  • 今天在学习python的过程中,发现python没有switch这个语法。于是就想在python中如何才能实现这个功能呢? 正文 本文中我们对switch的使用模拟为正常的数据库的增删改查操作的对应,如’select 对应’select action...
  • Python实现switch效果

    2019-12-20 16:55:54
    Java中有switch这个东东的地方使用switch感觉还挺好使,但是Python没有提供switch这个东东,下面我们想办法来完成类似Java和C里面的那种switch效果。 Java示例代码: import java.util.Scanner; public class ...

    Java中有switch这个东东有的地方使用switch感觉还挺好使,但是Python没有提供switch这个东东,下面我们想办法来完成类似Java和C里面的那种switch效果。

    Java示例代码:

    import java.util.Scanner;
    
    public class Demo {
    
    	public static void main(String[] args) {
    
    		Scanner sc = new Scanner(System.in);
    		System.out.println("请输入一个月份(1-12):");
    		int month = sc.nextInt();
    		
    		switch(month) {
    		case 1:
    		case 2:
    		case 12:
    			System.out.println("冬季");
    			break;
    		case 3:
    		case 4:
    		case 5:
    			System.out.println("春季");
    			break;
    		case 6:
    		case 7:
    		case 8:
    			System.out.println("夏季");
    			break;
    		case 9:
    		case 10:
    		case 11:
    			System.out.println("秋季");
    			break;
    		default:
    			System.out.println("输入的格式有误!!!");
    		}
    		sc.close();
    	}
    }
    

    eclipse中执行结果:

    请输入一个月份(1-12):
    12
    冬季
    

    Python示例代码:

    sets = {
        '1': '冬季',
        '2': '冬季',
        '3': '春季',
        '4': '春季',
        '5': '春季',
        '6': '夏季',
        '7': '夏季',
        '8': '夏季',
        '9': '秋季',
        '10': '秋季',
        '11': '秋季',
        '12': '冬季',
    }
    
    string = int(input("请输入一个月份(1-12):"))
    print(sets.get(str(string), '输入的格式有误!!!'))  # get(value,not result return value)
    

    pycharm中执行结果:

    请输入一个月份(1-12):12
    冬季
    

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:579817333 
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def a(month):
        print(f'你输入的是:【{month}】是春季')
    
    def b(month):
        print(f'你输入的是:【{month}】是夏季')
    
    def c(month):
        print(f'你输入的是:【{month}】是秋季')
    
    def d(month):
        print(f'你输入的是:【{month}】是冬季')
    
    def e(month):
        print(f'输入的是:【{month}】请检查,格式有误!!!')
    
    sets = {
        '1': d,
        '2': d,
        '3': a,
        '4': a,
        '5': a,
        '6': b,
        '7': b,
        '8': b,
        '9': c,
        '10': c,
        '11': c,
        '12': d,
        '13': e
    }
    
    string = str(input("请输入一个月份(1-12):"))
    sets.get(string, e)(string)
    

    pycharm中执行结果:

    请输入一个月份(1-12):12
    你输入的是:【12】是冬季
    
    展开全文
  • python实现switch功能

    千次阅读 2017-03-21 23:33:53
    许多编程语言都switch功能,但python我行我素的奉行着极简的python哲学,没有switch语句。不过它用一种更巧妙的方式将switch悄悄的藏了起来。 python字典可以实现switch功能,举两个具体例子说明。
  • python中的switch=case

    2021-03-31 18:15:46
    用字典代替: dic={ “key”: “value” … } 用方法 dic.get(“key”,“none”): 字典中返回value,没有返回"none
  • Python实现switch方法

    千次阅读 2019-03-28 18:53:18
    在很多编程语言中都switch/case语法,但是Python中并没有switch语句。相应的应对方法除了if-else语句外,还可以用字典dict来实现; 举例如下: import outer_fun class PythonSwitch(): def __init__(self): ...
  • 最近在使用Python单元测试框架构思自动化测试,在不段的重构与修改中,发现了大量的if...else之类的语法,有没有什么好的方式使Python具有C/C#/JAVA等的switch功能呢? 在不断的查找和试验中,发现了这个:...
  • Python实现switch case语句

    千次阅读 2019-12-14 16:50:41
    Python本着“简单”的设计原则,控制语句只有判断流程if…else…和循环语句while/for,并没有类似于C语言的switch语句。 这样,带来的问题是遇到多条件判断时只能使用if判断语句,导致一大堆的if语句,代码丑陋不...
  • Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于一定经验的Python玩家不得不承认,的确如此。 但今天我们还是来看看如果一定...
  • python switch 多分支选择的实现

    千次阅读 2020-12-19 14:35:27
    实现 switch case 需要被判断的变量是可哈希和可比较的,这与 python 提倡的灵活性冲突。在实现上优化不好做,可能到最后最差的情况汇编出来和 if else 组是一样的,所以 python 没有支持 但是没有 switch 关键字...
  • 最近在使用Python单元测试框架构思自动化测试,在不段的重构与修改中,发现了大量的if...else之类的语法,有没有什么好的方式使Python具有C/C#/JAVA等的switch功能呢? 在不断的查找和试验中,发现了这个:...
  • Python 实现简单的 switch/case 语句

    千次阅读 2018-09-16 19:42:30
    Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于一定经验的Python玩家不得不承认,的确如此。 但今天我们还是来看看如果一定...
  • switchpython字典

    2015-08-14 07:46:00
    python 中并没有switch语句,但是一个数据类型与switch语句特别相似,它就是 dict{ key: value, ...} 下面用 dict{ key:value,..} 来简单的实现switch语句: #!/usr/bin/env python #coding:utf-8 from __...
  • 在C++等语言中,经常会使用到switch-case语句,但是在Python中却没有这个语句。 想要实现这个方法,在Python更加简单的巧妙办法:使用字典,因为字典的值可以是任意数据类型 使用一个字典,如代码中的dict,...
  • python没有swich..case,若要实现一样的功能,又不想用if..elif来实现,可以充分利用字典进行实现 主要是想要通过不同的key调用不同的方法,在学习过程中,发现不管输入的key是什么,只要字典中存在输出内容...
  • 众所周知,Python没有switch/case语句,而工作中经常会不同的逻辑需要处理,比较常见的方式是使用if语句实现多种逻辑处理,但随着逻辑的增多,多个elif会让代码看起来很不友好。比较trick的方法,是使用dict实现...
  • 然后,我记得C语言里一个default,当case没有对应的取值时,就会去执行default。如果按照我们这里,设day=6时,是会报错的。所以我们要想一种办法,当字典没有对应的key时,也可以处理。 进阶操作: switcher={ ...
  • python中没有swich..case,若要实现一样的功能,又不想用if..elif来实现,可以充分利用字典进行实现 ...通过调试后,发现问题主要出现在key值对应的value的方法名有没有带()有很大的关系,如下: 不管bb中的num...
  • 模式匹配python版: 不同于java的swith-case 和 scala的match-case, Python里面没有这类关键字. 所以只能通过字典实现: 先定义一个字典以确定映射关系,再通过get('key')方法获取到字典里面对应的值, 值可以是之前...
  • 注:Python没有 Switch 这种开关语句 if 语句 检测条件真,执行语句块 1;假,执行语句块 2。分支语句 语法格式: if condition(条件): statement 1(语句块1) elif: stetement 2 (语句块2) else: pass # ...
  • python学习06

    2017-06-28 10:05:00
    python中本来是没有switch/case语句的,可以通过字典与函数结合的方式达switch/case的效果。 如下: 注意:from__future__ import division :作用是让计算结果中小数的显示成小数,不会取整。 2.内置函数 ...
  • Python流程控制

    2019-03-28 11:26:24
    Python流程控制分支语句体if单分支if 双分支if多分支while循环for循环 分支语句体 if单分支 格式: if 逻辑语句1: 语句块;...注意:每个逻辑语句后面...知道:在Python没有switch—case语句。 格式: if...
  • python 基本的规范

    2018-11-10 21:36:33
    python 中不存在常量,只有形式上的常量 python中是区分大小写的 一个文件就是一个模块,标准的python开头都模块说明 ... python没有switch语句,用elif或是字典的方式可以代替 else必须和if配套使...
  • Python笔记Day3

    2017-10-19 17:30:53
    python不支持switch语句,所以多个条件判断,只能用elif来实现 可以使用or,表示两个条件一个成立时判断条件成功 使用and是,表示只有两个条件同时成立的情况下,判断条件才成功python循环 提供了for循环和...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 164
精华内容 65
关键字:

python有没有switch

python 订阅