码迷,mamicode.com
首页 > 编程语言 > 详细

python 中无switch(写了几个函数代替switch)

时间:2020-01-08 22:46:06      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:就是   sub   import   wrong   sys   gbk   inpu   bsp   imp   

字典的常用用途之一代替switch

在C/C++/Java语言中,有个很方便的函数switch,比如:

复制代码代码如下:

public class test {  
      
    public static void main(String[] args) {  
        String s = "C";  
        switch (s){  
        case "A":   
            System.out.println("A");  
            break;  
        case "B":  
            System.out.println("B");  
            break;  
        case "C":  
            System.out.println("C");  
            break;  
        default:  
            System.out.println("D");  
        }  
    }  
}  

 

在Python中要实现同样的功能,
方法一,就是用if, else语句来实现,比如:

from __future__ import division  
  
def add(x, y):  
    return x + y  
  
def sub(x, y):  
    return x - y  
  
def mul(x, y):  
    return x * y  
  
def div(x, y):  
    return x / y  
  
def operator(x, y, sep=‘+‘):  
    if   sep == ‘+‘: print add(x, y)  
    elif sep == ‘-‘: print sub(x, y)  
    elif sep == ‘*‘: print mul(x, y)  
    elif sep == ‘/‘: print div(x, y)  
    else: print ‘Something Wrong‘  
  
print __name__  
   
if __name__ == ‘__main__‘:  
    x = int(raw_input("Enter the 1st number: "))  
    y = int(raw_input("Enter the 2nd number: "))  
    s = raw_input("Enter operation here(+ - * /): ")  
    operator(x, y, s)  

 

方法二,用字典来巧妙实现同样的switch的功能,比如:

复制代码代码如下:

#coding=gbk  
  
from __future__ import division  
  
x = int(raw_input("Enter the 1st number: "))  
y = int(raw_input("Enter the 2nd number: "))  
  
def operator(o):  
    dict_oper = {  
        ‘+‘: lambda x, y: x + y,  
        ‘-‘: lambda x, y: x - y,  
        ‘*‘: lambda x, y: x * y,  
        ‘/‘: lambda x, y: x / y}  
    return dict_oper.get(o)(x, y)  
   
if __name__ == ‘__main__‘:    
    o = raw_input("Enter operation here(+ - * /): ")  
    print operator(o)  

python 中无switch(写了几个函数代替switch)

标签:就是   sub   import   wrong   sys   gbk   inpu   bsp   imp   

原文地址:https://www.cnblogs.com/wen-/p/12168757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!