Làm cách nào để tạo công tắc trong Python?

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

Làm cách nào để tạo công tắc trong Python?

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 n<0:
        return 'n'
    return 'z'


def switch(no):
    switch={
       'p': "Positive",
       'n': "Negative",
       'z': "Zero",
       }
    return switch.get(sign(no),"Invalid input")

switch(4)

switch('l')

đầu ra

'Tích cực'

'Đâu vao không hợp lệ'

Q3. Viết chương trình kiểm tra xem một thư có đúng không, bằng cách kiểm tra xem thư có chứa ký tự ‘@’ và ‘. com’

trả lời. Chúng ta có thể viết một hàm để kiểm tra xem ký tự có xuất hiện trong thư hay không bằng cách sử dụng toán tử thành viên

Ví dụ để kiểm tra tính hợp lệ của id thư

def check(mail):
    if('@' in mail and '.com' in mail):
        return True
    return False

def switch(mail):
    switch={
       True: "It is vaild",
       False: "It is invalid",
       }
    return switch.get(check(mail),"Please give proper input")

switch('[email protected]')

switch('[email protected]')

đầu ra

'Nó hợp lệ'

'Nó không hợp lệ'

Q4. Viết chương trình kiểm tra xem số đầu tiên có chia hết cho 2, 3 hay 5 không

trả lời. Ta có thể viết hàm kiểm tra tính chia hết rồi dựa vào kết quả ta có thể đưa ra kết quả phù hợp. Sau đó, khi gọi hàm, chúng ta có thể kiểm tra tính chia hết cho 2, 3 hoặc 5

Ví dụ kiểm tra tính hợp lệ chia hết

class Divisibility():

    def div2(self,n):
        return (n%2==0)
    def div3(self,n):
        return n%3==0
    def div5(self,n):
        return n%5==0
    def divide(self,no1,no2):
        name_of_method="div"+str(no2)
        method=getattr(self,name_of_method,lambda :'Give an input as an integer 2, 3 or 5')
        return method(no1)

d=Divisibility()
d.divide(6,3)

đầu ra

Thật

Q5. Viết hàm in giá của những thứ sau trong menu khi nhập vào là một trong các số từ 1 đến 5
1. Giá của Pizza là Rs. 80
2. Giá của Burger là Rs. 100
3. Giá của lửa gà là Rs. 150
4. Giá của một thức uống mát lạnh là Rs. 30
5. Giá mì là Rs. 50

trả lời. Dưới đây là ví dụ viết menu bằng Python switch

________số 8_______

đầu ra

Giá gà cháy là Rs. 150
'Không hợp lệ'

Câu đố về Trường hợp chuyển đổi Python

Giới hạn thời gian. 0

Tóm tắt bài kiểm tra

0 trong tổng số 15 câu hỏi đã hoàn thành

câu hỏi

Thông tin

Bạn đã hoàn thành bài kiểm tra trước đây. Do đó bạn không thể bắt đầu lại

Bài kiểm tra đang tải…

Bạn phải đăng nhập hoặc đăng ký để bắt đầu bài kiểm tra

Trước tiên bạn phải hoàn thành những điều sau đây

Kết quả

hoàn thành bài kiểm tra. Kết quả đang được ghi lại

Kết quả

0 trong số 15 Câu hỏi đã được trả lời đúng

Thời gian của bạn

Thời gian đã trôi qua

Bạn đã đạt 0 của 0 điểm 0)

(Các) Điểm đã kiếm được. 0 của 0 , ( 0)
0 (Các) Bài luận đang chờ xử lý ((Các) Điểm có thể. 0 )

Thể loại

  1. Không được phân loại 0%

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15

  1. Hiện hành
  2. Đánh giá / Bỏ qua
  3. đã trả lời
  4. Chính xác
  5. Không đúng

  1. Câu hỏi 1 của 15

    1 . Câu hỏi

    • Điều nào sau đây không thể được sử dụng để thực hiện chuyển đổi trong Python?

     

    • Câu lệnh if-else
    • trình tự lồng nhau
    • Lớp học
    • Từ điển

    Chính xác

    Không đúng

  2. Câu hỏi 2 của 15

    2 . Câu hỏi

    • Chọn phương án đúng về hoạt động của switch case chung trong Python

     

    • Tìm kiếm một trường hợp phù hợp và chạy tất cả các trường hợp sau nó
    • Kiểm tra trường hợp phù hợp và in giá trị đó trong bảng điều khiển
    • Tìm trường hợp phù hợp và chạy chức năng/mã tương ứng
    • Tất cả những điều trên

    Chính xác

    Không đúng

  3. Câu hỏi 3 của 15

    3 . Câu hỏi

    • Điều nào sau đây là đúng về công tắc?

     

    • Trường hợp mặc định không bắt buộc đối với trường hợp chuyển đổi
    • Chúng ta có thể sử dụng nhiều câu lệnh được phân tách bằng và/hoặc điều kiện dạng đó
    • Chúng tôi triển khai phần thân của công tắc bằng cách sử dụng từ khóa 'switch' theo sau là các trường hợp được đặt trong dấu ngoặc nhọn
    • Tất cả những điều trên

    Chính xác

    Không đúng

  4. Câu hỏi 4 của 15

    4 . Câu hỏi

    Đầu ra của mã sau đây là gì?

    dấu hiệu xác định (số)
    nếu(số>0)
    in ("Tích cực")
    yêu tinh(num<0)
    print('Phủ định')
    khác
    in ('Không')
    dấu(0)

    • Số không
    • Tích cực
    • Tiêu cực
    • Lỗi cú pháp

    Chính xác

    Không đúng

  5. Câu hỏi 5 của 15

    5 . Câu hỏi

    • Việc sử dụng trường hợp mặc định trong chuyển đổi là gì?

     

    • Để ngăn chặn sự xuất hiện của lỗi
    • Để có được đầu ra chính xác
    • Đó là một trường hợp bổ sung chạy khi không có trường hợp nào khớp
    • Cả a và c

    Chính xác

    Không đúng

  6. Câu hỏi 6 của 15

    6 . Câu hỏi

    Điều nào sau đây là đầu ra chính xác cho đoạn mã sau?

    số xác định (n)
    chuyển đổi = {
    1. 'một',
    2. 'hai',
    3. 'ba',
    }
    công tắc trở lại. get(n,”Không có đầu ra”)

    số 2')

    • hai ba
    • hai
    • Lỗi cú pháp
    • 'Không có đầu ra'

    Chính xác

    Không đúng

  7. Câu hỏi 7 của 15

    7 . Câu hỏi

    Đầu ra của mã sau đây là gì?

    def OddEve(num)
    nếu (số% 2)
    trở lại ("Lẻ")
    trả lại ('Chẵn')
    Đêm lẻ(1)

    • 'Số lẻ'
    • 'Thậm chí'
    • 'Lẻ thậm chí'
    • Không có điều nào ở trên

    Chính xác

    Không đúng

  8. Câu hỏi 8 của 15

    8 . Câu hỏi

    • Điều nào sau đây là đúng về việc chuyển qua câu lệnh if?

     

    • Trường hợp chuyển đổi chạy nhanh hơn câu lệnh if
    • Các trường hợp chuyển đổi có thể xử lý nhiều điều kiện hơn
    • Các trường hợp chuyển đổi có cấu trúc và dễ đọc hơn
    • Cả a và c

    Chính xác

    Không đúng

  9. Câu hỏi 9 của 15

    9 . Câu hỏi

    Đầu ra của mã sau đây là gì?

    a=5
    b=6

    chắc chắn thêm()
    trả về a+b

    def subs()
    trở lại a-b

    sản phẩm chắc chắn()
    trả lại a*b

    def div()
    trả lại một // b

    hoạt động xác định (op)
    chuyển đổi = {
    'Một'. cộng(),
    'S'. phụ (),
    'P'. sản phẩm(),
    'd'. div(),

    }
    công tắc trở lại. get(op,'Nhập sai')

    hoạt động ('P')

    • 30
    • 30 0
    • 30 0 Nhập sai
    • nhập sai

    Chính xác

    Không đúng

  10. Câu hỏi 10 của 15

    10 . Câu hỏi

    Điều nào sau đây là đầu ra chính xác cho đoạn mã dưới đây?

    danh sách1=[14,19,6,13,0]
    chức năng xác định (lst)
    cho tôi trong lst
    nếu tôi%2
    in(i,end=’‘)
    khác. vượt qua

    chức năng (danh sách1)

    • 19 13
    • 14 6 0
    • 0 6 14
    • Lỗi cú pháp

    Chính xác

    Không đúng

  11. Câu hỏi 11 của 15

    11 . Câu hỏi

    Cách nào sau đây là cách sử dụng đúng lớp cho switch?

    a

    lớp Lớp ()

    trường hợp chắc chắn1()

    in ('Xin chào')

    trường hợp chắc chắn2()

    in('Xin chào')

    trường hợp chắc chắn3()

    in ('Chào mừng')

    trường hợp def (tự, không)

    func=”trường hợp”+str(không)

    method=getattr(self,func,lambda. 'Tạm biệt')

    phương thức trả về()

    obj=Lớp()

    đối tượng. trường hợp(2)

    b

    lớp Lớp ()

    trường hợp def1 (tự)

    in ('Xin chào')

    trường hợp def2 (tự)

    in('Xin chào')

    trường hợp def3 (tự)

    in ('Chào mừng')

    trường hợp def (tự, không)

    func=”trường hợp”+str(không)

    method=getattr(self,func,lambda. 'Tạm biệt')

    phương thức trả về()

    obj=Lớp()

    đối tượng. trường hợp(2)

    c

    lớp Lớp ()

    trường hợp def1 (tự)

    in ('Xin chào')

    trường hợp def2 (tự)

    in('Xin chào')

    trường hợp def3 (tự)

    in ('Chào mừng')

    trường hợp def (tự, không)

    func=”trường hợp”+(không)

    method=getattr(self,func)

    phương thức trả về()

    obj=Lớp()

    đối tượng. trường hợp(2)

    • Một
    • b
    • c
    • Tất cả những điều trên

    Chính xác

    Không đúng

  12. Câu hỏi 12 của 15

    12 . Câu hỏi

    Đầu ra của mã sau đây là gì?

    so sánh chắc chắn (a, b)
    nếu(a>b)
    trả lại 'a'
    nếu (a<=b)
    trả về 'b'
    trả về 'Không'

    so sánh(4,9)

    • 'Một'
    • 'b'
    • 'Không có'
    • Lỗi cú pháp

    Chính xác

    Không đúng

  13. Câu hỏi 13 của 15

    13 . Câu hỏi

    Điều gì có thể là đầu ra của mã sau đây?

    thành viên def(ch,st)

    chuyển đổi = {
    ĐÚNG VẬY. 'Hiện tại',
    SAI. 'Không hiện diện'
    }
    công tắc trở lại. get(ch in st,'Nhập sai')

    thành viên(1,154)

    • 'Hiện tại'
    • 'Không có mặt'
    • Lỗi cú pháp
    • LoạiLỗi

    Chính xác

    Không đúng

  14. Câu hỏi 14 của 15

    14 . Câu hỏi

    Tìm đầu ra của đoạn mã sau

    nguyên âm def (chuỗi)
    chuyển đổi = {
    'Một'. 1,
    'e'. 2,
    'Tôi'. 3,
    'o'. 4,
    'u'. 5,
    }
    cho tôi trong chuỗi
    in (chuyển đổi. get(i,””),end=””)

    nguyên âm ('abteci')

    • 3
    • 2
    • 123
    • 1

    Chính xác

    Không đúng

  15. Câu hỏi 15 của 15

    15 . Câu hỏi

    Đầu ra của mã sau đây là gì?

    chắc chắn vui1()
    in(1)

    chắc chắn fun2()
    in(2)

    chắc chắn fun3()
    in(3)

    chức năng xác định (ch)
    chuyển đổi = {
    'x'. vui vẻ1,
    'y'. vui vẻ2,
    'z'. vui vẻ3,

    }
    công tắc trở lại. get(ch,'Đầu vào sai')

    in(func('z'))

    • 3
    • 1 2
    • 3 Nhập sai
    • Không có điều nào ở trên

    Chính xác

    Không đúng

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu về các câu lệnh switch-case, hoạt động của chúng và cách triển khai chúng theo những cách khác nhau. Cuối cùng, chúng tôi đã thấy một số câu hỏi thực hành

Có chức năng chuyển đổi trong Python không?

Python không có chức năng câu lệnh chuyển đổi . Nhưng có nhiều cách để thay thế chức năng câu lệnh chuyển đổi và làm cho việc lập trình trở nên dễ dàng và nhanh hơn. Điều này có thể xảy ra vì Python cho phép chúng tôi tạo các đoạn mã hoạt động giống như các câu lệnh Switch case trong bất kỳ ngôn ngữ nào khác.

Chúng ta có thể triển khai trường hợp chuyển đổi trong Python không?

Có, Python có chức năng Switch case . Kể từ Python 3. 10, giờ đây chúng ta có thể sử dụng cú pháp mới để triển khai loại chức năng này với trường hợp đối sánh. Câu lệnh đối sánh trường hợp cho phép người dùng triển khai chính xác các đoạn mã để chuyển đổi trường hợp.

Câu lệnh switch() là gì?

Trong các ngôn ngữ lập trình máy tính, câu lệnh chuyển đổi là một loại cơ chế kiểm soát lựa chọn được sử dụng để cho phép giá trị của một biến hoặc biểu thức thay đổi luồng điều khiển thực thi chương trình thông qua tìm kiếm và . .

Tại sao chuyển đổi không có sẵn trong Python?

Python không có câu lệnh chuyển đổi/trường hợp do Đề xuất không đạt yêu cầu . Không ai có thể đề xuất một triển khai hoạt động tốt với cú pháp của Python và kiểu mã hóa đã được thiết lập. Đã có nhiều đề xuất, bạn có thể xem một số đề xuất trong PEP 3103 -- A Switch/Case Statement.