Python không có câu lệnh switch-case như một số ngôn ngữ lập trình khác (như C, Java hay JavaScript). Tuy nhiên, bạn có thể đạt được chức năng tương tự bằng cách sử dụng một số cấu trúc điều khiển khác như if-elif-else, từ điển (dictionary), hoặc match-case (được giới thiệu trong Python 3.10).

Dưới đây là ba cách để mô phỏng cấu trúc switch-case trong Python.

1. Sử Dụng if-elif-else

Bạn có thể sử dụng cấu trúc if-elif-else để thay thế cho switch-case:

def switch_case(value):
    if value == 1:
        return "Giá trị là 1"
    elif value == 2:
        return "Giá trị là 2"
    elif value == 3:
        return "Giá trị là 3"
    else:
        return "Giá trị không hợp lệ"

# Sử dụng hàm
print(switch_case(2))  # Kết quả: Giá trị là 2

2. Sử Dụng Từ Điển (Dictionary)

Một cách khác để mô phỏng switch-case là sử dụng từ điển. Từ điển sẽ ánh xạ các giá trị đến các hàm hoặc kết quả:

def case_one():
    return "Giá trị là 1"

def case_two():
    return "Giá trị là 2"

def case_three():
    return "Giá trị là 3"

def switch_case(value):
    switcher = {
        1: case_one,
        2: case_two,
        3: case_three
    }
    # Sử dụng .get() để tránh lỗi KeyError nếu giá trị không tồn tại
    return switcher.get(value, lambda: "Giá trị không hợp lệ")()

# Sử dụng hàm
print(switch_case(3))  # Kết quả: Giá trị là 3

3. Sử Dụng match-case (Python 3.10 trở lên)

Python 3.10 đã giới thiệu cú pháp match-case, tương tự như switch-case trong các ngôn ngữ khác:

def switch_case(value):
    match value:
        case 1:
            return "Giá trị là 1"
        case 2:
            return "Giá trị là 2"
        case 3:
            return "Giá trị là 3"
        case _:
            return "Giá trị không hợp lệ"

# Sử dụng hàm
print(switch_case(1))  # Kết quả: Giá trị là 1

Kết Luận

Mặc dù Python không có câu lệnh switch-case chính thức, bạn có thể sử dụng if-elif-else, từ điển, hoặc cú pháp match-case để đạt được chức năng tương tự. Sự linh hoạt này cho phép bạn xử lý các điều kiện và trường hợp một cách hiệu quả trong mã của mình.