Nhìn vào từ 'công tắc', bạn có nhớ công tắc được sử dụng để bật và tắt thiết bị không?
Trong một ngôn ngữ lập trình, switch là một câu lệnh ra quyết định. Trong bài viết này, chúng ta sẽ tìm hiểu hoạt động của switch case và cách triển khai nó trong Python. Vì vậy, chúng ta hãy bắt đầu với phần giới thiệu về công tắc
Giới thiệu về Python Switch
Như đã nói ở trên, công tắc là một cấu trúc có thể được sử dụng để thực hiện luồng điều khiển trong chương trình. Nó có thể được sử dụng thay thế cho các câu lệnh if-else hoặc thang elif khi chúng ta có một biến/một biểu thức duy nhất mà chúng ta sử dụng để đưa ra quyết định
Sử dụng điều này thay vì nhiều câu lệnh if-else làm cho mã trông sạch hơn, nhanh hơn và dễ đọc hơn. Nó hoạt động bằng cách thực thi khối mã theo trường hợp tương ứng thỏa mãn
Chúng ta hãy xem xét nhiều hơn về công việc trong phần tiếp theo
Hoạt động của Switch Case trong Python
Các câu lệnh chuyển đổi chủ yếu bao gồm điều kiện và các trường hợp khác nhau được kiểm tra để tạo điều kiện. Nó nhận một giá trị hoặc một biến hoặc một biểu thức làm đầu vào
Mỗi trường hợp tương ứng với một giá trị cụ thể. Nó kiểm tra xem có bất kỳ trường hợp nào bằng với đầu vào hay không và dựa trên [các] câu lệnh tương ứng đó được [được] thực thi. Nó cũng cho phép chúng ta viết một trường hợp mặc định, trường hợp này được thực thi nếu không có trường hợp nào là Đúng
Chúng ta hãy xem một ví dụ kiểm tra ngày trong tuần dựa trên số đã cho để biết hoạt động của câu lệnh switch. Nó lấy số làm đầu vào và kiểm tra nó với từng trường hợp cho đến khi đạt đến trường hợp Đúng
Bắt đầu từ 0 đến 6, nó sẽ kiểm tra cho đến khi số bằng một trong các giá trị này. Và tại một thời điểm nếu nó khớp, ngày tương ứng trong tuần sẽ được in. Nếu không có trường hợp nào phù hợp, thì nó sẽ thực thi trường hợp mặc định và in thông tin đầu vào không hợp lệ
Nhìn vào lưu đồ bên dưới để hiểu thêm về hoạt động của các vòng lặp
Không giống như các ngôn ngữ lập trình khác như C, C++, Java, v.v. , trong Python, không có cấu trúc chuyển đổi tích hợp. Nhưng nó cho phép chúng tôi triển khai các câu lệnh chuyển đổi bằng cách sử dụng các câu lệnh khác theo những cách khác nhau. Chúng ta có thể sử dụng những điều sau đây để làm như vậy
1. một cuốn từ điển
2. một lớp học
Triển khai Switch trong Python bằng thang elif
Trước khi sử dụng các cấu trúc khác, trước tiên, chúng ta hãy sử dụng thang elif để thực hiện điều khiển công tắc. Đoạn mã sau đây cho thấy một ví dụ về việc đưa ra đầu ra dưới dạng số bằng chữ
Ví dụ triển khai switch case sử dụng thang elif
def num_in_words[no]: if[no==1]: print["One"] elif[no==2]: print["Two"] elif[no==3]: print["Three"] else: print["Give input of numbers from 1 to 3"] num_in_words[3] num_in_words[4.5]
đầu ra
Số ba
Nhập các số từ 1 đến 3
Ở đây, khi chúng ta gọi hàm, thang elif được thực thi. Và số đưa ra làm đầu vào được kiểm tra với các điều kiện trong ngoặc và khối tương ứng được thực thi khi điều kiện được đáp ứng. Nếu không có điều kiện nào thỏa mãn, khối khác sẽ thực thi, yêu cầu đưa ra các số chính xác
Triển khai Python Switch bằng Từ điển
Chúng ta có thể sử dụng một từ điển để thực hiện trường hợp chuyển đổi. Chúng tôi biết rằng từ điển chứa các cặp khóa-giá trị. Nó có thể có các khóa là điều kiện/phần tử được kiểm tra và các giá trị là phần tử được in hoặc các chức năng được thực thi
Sử dụng các phần tử làm giá trị của từ điển
Chúng ta có thể sử dụng các phần tử được in làm giá trị của từ điển và sử dụng hàm get[] để lấy giá trị tương ứng của một khóa
Đoạn mã sau đây cho thấy một ví dụ về việc in một nguyên âm tương ứng
Ví dụ về việc triển khai trường hợp chuyển đổi bằng từ điển
def vowel[num]: switch={ 1:'a', 2:'e', 3:'i', 4:'o', 5:'u' } return switch.get[num,"Invalid input"] vowel[3] vowel[0]
đầu ra
'Tôi'
'Đâu vao không hợp lệ'
Ở đây khi chúng ta gọi hàm bằng cách nhập một số làm đầu vào, thì nó sẽ thực thi từ điển và câu lệnh trả về. Câu lệnh return chứa hàm get[] của từ điển, hàm này xuất giá trị của khóa tương ứng. Ở đây chìa khóa là số
Đối số thứ hai của get[] là giá trị mặc định được trả về khi không tìm thấy khóa. Vì vậy, nó trả về "Đầu vào không hợp lệ" nếu số không nằm trong khoảng từ 1 đến 5
Sử dụng hàm/hàm lambda làm giá trị của từ điển
Chúng ta cũng có thể sử dụng các hàm làm giá trị của từ điển. Sau đó, chúng ta có thể sử dụng get[] của từ điển để gọi hàm cụ thể đó. Điều này sẽ giúp chúng ta viết nhiều thao tác sử dụng switch hơn là chỉ in một phần tử khi tìm khóa khớp
Đoạn mã sau đưa ra một ví dụ về việc sử dụng các hàm để thực hiện một thao tác cụ thể dựa trên toán hạng đầu vào
Ví dụ về triển khai trường hợp chuyển đổi bằng từ điển với các hàm là giá trị
def add[]: return n+m def subs[]: return n-m def prod[]: return n*m def div[]: return m/n def rem[]: return m%n def operations[op]: switch={ '+': add[], '-': subs[], '*': prod[], '/': div[], '%': rem[], } return switch.get[op,'Choose one of the following operator:+,-,*,/,%'] operations['*'] operations['^']
đầu ra
36
‘Chọn một trong các toán tử sau. +,-,*,/,%'
Ở đây quy trình tương tự như trong trường hợp khi chúng tôi in một giá trị trong trường hợp trước. Khi chúng ta gọi hàm là 'hoạt động' bằng cách đưa toán tử làm đầu vào, từ điển và các câu lệnh trả về được thực thi
Và hàm get[]] trong câu lệnh return kiểm tra khóa, ở đây là toán tử và gọi các hàm tương ứng. Sau đó xuất giá trị được trả về bởi hàm tương ứng
Nếu không tìm thấy khóa, nó sẽ in ra để chọn các toán tử trong từ điển, được đưa ra làm đối số thứ hai
Triển khai Python Switch bằng Class
Bên cạnh việc sử dụng từ điển, chúng ta cũng có thể sử dụng các lớp Python để triển khai cấu trúc chuyển đổi. Các lớp nói một cách đơn giản là tập hợp các biến và hàm hoạt động như một đơn vị. Chúng ta có thể định nghĩa một lớp bằng cách sử dụng từ khóa 'lớp'
Đoạn mã dưới đây cho thấy một ví dụ về việc thực hiện chuyển đổi để lấy con bướm đêm đã cho số, sử dụng lớp
Ví dụ về việc triển khai trường hợp chuyển đổi bằng cách sử dụng lớp
class Month[object]: def month_1[self]: print["January"] def month_2[self]: print["February"] def month_3[self]: print["March"] def month_4[self]: print["April"] def month_5[self]: print["May"] def month_6[self]: print["June"] def month_7[self]: print["July"] def month_8[self]: print["August"] def month_9[self]: print["September"] def month_10[self]: print["October"] def month_11[self]: print["November"] def month_12[self]: print["December"] def getMonth[self,no]: name_of_method="month_"+str[no] method=getattr[self,name_of_method,lambda :'Give an input as an integer from 1 to 12'] return method[] mo=Month[] mo.getMonth[5] mo.getMonth[0.5]
đầu ra
Có thể
'Cho đầu vào là số nguyên từ 1 đến 12'
Ở đây một chức năng được xác định cho mỗi tháng. Và chức năng 'getMonth[]' có nội dung chính của những gì chúng ta muốn triển khai. Hàm này lấy một số làm đầu vào và kết hợp nó với chuỗi 'tháng_' để có tên hàm tương ứng. Phương thức được gọi bằng cách sử dụng phương thức 'getattr[]' để gọi hàm cụ thể. Sau đó, chúng tôi trả về đầu ra của hàm được gọi
Nếu hàm không khả dụng, thì chúng ta gọi hàm mặc định được cung cấp làm đối số thứ hai cho 'getattr[]'. Ở đây chúng tôi đã đưa ra một hàm lambda yêu cầu cung cấp đầu vào chính xác
Câu hỏi phỏng vấn trên Python Switch
Q1. Viết chương trình switch case để kiểm tra xem một chữ cái có phải là nguyên âm không
trả lời. Chúng ta có thể viết các nguyên âm dưới dạng khóa của từ điển và giá trị dưới dạng chuỗi 'Đó là một nguyên âm'. Và trường hợp mặc định in nó không phải là nguyên âm
Ví dụ kiểm tra xem một chữ cái có phải là nguyên âm hay không
def operations[letter]: switch={ 'a': "It is a vowel", 'e': "It is a vowel", 'i': "It is a vowel", 'o': "It is a vowel", 'u': "It is a vowel", } return switch.get[letter,"It is a not a vowel"] operations['a']
đầu ra
'Đó là một nguyên âm'
'Đó không phải là một nguyên âm'
quý 2. Viết chương trình kiểm tra xem hàm này dương hay âm hay bằng không
trả lời. Ta có thể viết hàm kiểm tra dấu của số. Trong chức năng này, trước tiên chúng ta có thể kiểm tra xem số đó có phải là một chữ số hay không bằng cách sử dụng hàm tích hợp isdidigt[], để tránh lỗi. Sau đó, chúng ta có thể gọi hàm đó trong phương thức get[] và dựa trên đầu ra của hàm này, chúng ta có thể viết các trường hợp chuyển đổi
Ví dụ kiểm tra dấu của một số
def sign[n]: if[~n.isdigit[]]: return "" if n>0: return 'p' if n0]
in ["Tích cực"]
yêu tinh[num