Không giống như các ngôn ngữ khác, Python không có cấu trúc switch case. Nếu như ở trong các ngôn ngữ khác như C/C++, java,… Bạn sẽ thấy điều đó thật kì lạ. Mình đã thử tìm hiểu vì sao để có thể sử dụng được switch case trong python. Trong bài viết hôm nay Lập trình không khó sẽ hướng dẫn các bạn một số cách để sử dụng cấu trúc switch case trong python.
Switch Case Trong python
Nếu như trong C/C++ có lẽ bạn đã từng thấy cấu trúc như:
switch(x){ case 1: cout<<"Sunday"; break; case 2: cout<<"Monday"; break; case 3: cout<<"Tuesday"; break; case 4: cout<<"Wednesday"; break; case 5: cout<<"Thursday"; break; case 6: cout<<"Friday"; break; case 7: cout<<"Saturday"; break; default: cout<<"nothing"; }
Nhưng Python không có cấu trúc như trên. Tuy nhiên chúng ta có thể dùng một số cách khác để có được một câu điều kiện tương tự như switch case.
Cách tạo một switch case trong python từ một dictionary
Chúng ta có thể dùng cấu trúc sẵn có if-else-other để mô tả lại cấu trúc Switch case trong python. Nhưng nếu làm như vậy thì đó vẫn chỉ là if-else chứ không phải là switch case.
Thay vào đó chúng ta sử dụng một dictionary để ánh xạ đến các case. Ở ví dụ dưới đây mình tạo một function là week để gọi tới các ngày trong tuần đó. Và nó sẽ được thực hiện như sau:
def week(x): switcher={ 1:'Sunday', 2:'Monday', 3:'Tuesday', 4:'Wednesday', 5:'Thursday', 6:'Friday', 7:'Saturday' } return switcher.get(x, "nothing") print(week(2))
Phương thức get()
của kiểu dữ liệu từ điển trả về giá trị của đối số x
được truyền nếu nó có trong từ điển, nếu không đối số thứ hai nothing
sẽ được gán làm giá trị mặc định của đối số được truyền.
Như vậy chúng ta đã có một function week tương tự như một switch case trong các ngôn ngữ khác, và bây giờ chỉ cần truyền tham số vào để thực hiện chương trình.
Switch case trong python với các hàm
Ví dụ trên đã chỉ cho chúng ta cách tạo một câu lệnh switch case đơn giản trong python. Để xử lí những trường hợp khó hơn, chúng ta có thể thay thế các case
thành các hàm, mỗi hàm sẽ thực hiện các nhiệm vụ khác nhau cho từng trường hợp.
Trong ví dụ ở dưới, hai hàm one và two sẽ thực hiện nếu chúng được gọi tới.
def one(): return "one" def two(): return "two" def test(x): switcher = { 1: one(), 2: two() } return switcher.get(x, "nothing") print(test(2))
Switch case với python class
Việc sử dụng class khá dễ dàng để thực hiện tạo cấu trúc switch.
- Trong ví dụ dưới đây, có một lớp Python_switch định nghĩa phương thức switch ().
- Nó lấy ngày trong tuần làm đối số, chuyển đổi nó thành chuỗi và nối vào chữ ‘case_’. Sau đó, chuỗi kết quả được truyền cho phương thức getattr ().
- Phương thức getattr () trả về một hàm phù hợp có sẵn trong lớp.
- Nếu chuỗi không tìm thấy kết quả khớp, thì getattr () trả về hàm lambda như mặc định.
class python_switch: def switch(self, day_of_week): default = "Incorrect day" return getattr(self, 'case_' + str(day_of_week), lambda: default)() def case_1(self): return "Monday" def case_2(self): return "Tuesday" def case_3(self): return "Wednesday" s = python_switch() print(s.switch(1)) print(s.switch(0))
Như vậy, mình đã giới thiệu cho các bạn về cấu trúc switch case trong python.
Hẹn các bạn vào các bài học sau!!!
Hãy tham gia group lập trình không khó để cùng thảo luận về các vấn đề về lập trình.
Để lại một bình luận