详解Python 用字典模拟switch-case语句

  • Post category:Python

Python语言本身没有原生的switch-case语句,但可以用字典模拟switch-case的功能。以下是用字典模拟switch-case语句的方法。

使用字典模拟switch-case语句的步骤

步骤一:创建一个字典

在字典中将需要判断的值作为键(key)存储,将对应的处理方法作为值(value)存储。

switch_case = {
    "value1": method1,
    "value2": method2,
    "value3": method3
}
键(key) 值(value)
“value1” method1
“value2” method2
“value3” method3

步骤二:执行字典的get()方法

通过get()方法获取需要执行的方法,如果字典中没有对应的值,则返回一个默认值,比如None

result = switch_case.get(value, default)

步骤三:执行方法

如果获取到了对应的方法,则执行这个方法。

if result:
    result()
else:
    print("No matched value in switch-case")

示例一:根据颜色返回对应的RGB值

def red():
    print("RGB value for red is (255,0,0)")

def green():
    print("RGB value for green is (0,255,0)")

def blue():
    print("RGB value for blue is (0,0,255)")

switch_case = {
    "red": red,
    "green": green,
    "blue": blue
}

color = input("Please input a color: ")
switch_case.get(color, lambda: "Invalid color")()

示例二:计算器

def add(a, b):
    print(a + b)

def subtract(a, b):
    print(a - b)

def multiply(a, b):
    print(a * b)

def divide(a, b):
    print(a / b)

calculator = {
    "+": add,
    "-": subtract,
    "*": multiply,
    "/": divide
}

operator = input("Please enter an operator (+,-,*,/): ")
if operator in calculator:
    num1 = float(input("Please enter first number: "))
    num2 = float(input("Please enter second number: "))
    calculator[operator](num1, num2)
else:
    print("Invalid operator")

以上是用Python字典模拟switch-case的方法,可以根据实际需求进行拓展和改进。