Bài 2.2. Câu lệnh match-case
Nội dung bài học
Mục đích sử dụng
- Câu lệnh match dùng trong trường hợp 1 biến có nhiều giá trị cần so sánh.
- Tương đương với câu lệnh if-elif về mặt ý nghĩa sử dụng.
- Câu lệnh này tương đương với cấu trúc switch trong các ngôn ngữ lập trình khác.
- Ví dụ sử dụng: tạo menu tùy chọn các chức năng của chương trình; xét giá trị 1 ngày trong tuần, tháng của năm, mùa của năm, giờ của ngày…
- Ta thường dùng câu lệnh match với các biến kiểu nguyên, string, hằng số hoặc đối tượng.
Cấu trúc của match
- Cấu trúc của match có dạng:
match variable:
case value_1:
do something
case value_2:
do something
case value_k:
do something
- Trong đó match, case là các từ khóa viết thường.
- Chương trình so sánh giá trị trong variable với lần lượt các giá trị value1, value2,…
- Trong quá trình so sánh nếu giá trị nào khớp với variable, nội dung case đó sẽ được thực hiện.
- Sơ đồ khối của câu lệnh này cho trong hình dưới đây:

- Nếu một case nào đó được thực hiện, tất cả các case còn lại khác sẽ bị bỏ qua.
- Nếu sau khi kết thúc câu lệnh không có case nào được thực hiện, chương trình thoát khỏi khối câu lệnh match.
- Để đảm bảo rằng chương trình luôn được thực hiện ta thêm trường hợp case _ vào câu lệnh. Đây thường là trường hợp sau cùng, để hiển thị thông báo lỗi, kiểm tra lại chương trình.
- Ta có thể kết hợp nhiều giá trị khác nhau trên 1 case bằng cách phân tách các giá trị đó bởi dấu |
Ví dụ minh họa
print("Where is the capital of Vietnam?")
print("1. Ha Noi")
print("2. Da Nang")
print("3. Hai Phong")
print("4. Ho Chi Minh")
choice = int(input("Enter your choice: "))
match choice:
case 1:
print("Wonderful! Your answer is correct!")
case 2 | 3 | 4:
print("Ehh. Your answer is wrong!")
case _:
print("Huh? Wrong option. Please try again!")
Where is the capital of Vietnam?
1. Ha Noi
2. Da Nang
3. Hai Phong
4. Ho Chi Minh
Enter your choice: 6
Huh? Wrong option. Please check again!
Bài tập thực hành
- Tải đề bài: click vào đây
- Bài giả mẫu: click vào đây
