Introducere în Python Switch statement

O declarație de comutare este o caracteristică de programare foarte utilă și puternică. Este o alternativă la instrucțiunea lad-if-else-if și oferă o performanță mai bună și un cod mai ușor de gestionat decât o declarație if-else-if ladder. Majoritatea limbajelor de programare (cum ar fi Java, C, etc.) oferă instrucțiuni de comutare, dar limbajul Python nu are instrucțiuni de comutare. Cu toate acestea, dacă doriți să comutați instrucțiuni de caz, există o modalitate foarte eficientă de a implementa o caracteristică de instrucțiune de tip switch în Python. Acest tutorial vă va ajuta să îl implementați.

Flowchart

Instrucțiunea de comutare în fiecare limbaj de programare are aceeași funcționalitate, dar sintaxa ușor diferită. Limbajul Python nu oferă nicio declarație de comutare integrată. Putem implementa această caracteristică cu același flux și funcționalitate, dar cu sintaxă și implementare diferite folosind Python Dictionary.

Sintaxa declarației de comutare

Urmăriți doar cele de mai jos două sintaxă diferite ale declarației switch. Prima declarație arată sintaxa standard a instrucțiunilor switch în alte limbaje de programare, cum ar fi C, Java, etc. A doua declarație este implementarea Python a instrucțiunii Switch. Puteți relata clar modul în care ambele sunt similare în funcționalitate, dar diferite în implementare.

1. Comutați în alte limbi (c, Java, ..)

Sintaxă:

switch(N)
(
case 1: Statement if N = 1;
break;
case 2: Statement if N = 2;
break;
::
case n: Statement if N = n;
break;
default: Statement if N doesn't match any
)

2. Comutarea implementării în Python

Sintaxă:

switcher=
(
key_1: value_1/method_1(),
key_2: value_2/method_2(),
key_3: value_3/method_3(),
::
key_n: value_n/method_n(),
)
key = N
value = switcher.get(key, "default")

Funcționarea declarației de comutare

  • Funcționarea instrucțiunii de comutare standard în orice limbaj de programare este similară. Este format din mai multe cazuri, fiecare având un bloc de cod și o declarație de pauză.
  • Argumentul de intrare este comparat cu mai multe cazuri unul după altul. Dacă argumentul se potrivește cu oricare dintre cazuri, atunci instrucțiunea bloc corespunzătoare este executată și controlul iese din instrucțiunea switch la instrucțiunea de pauză.
  • Dacă niciun caz nu se potrivește cu argumentul de intrare, atunci instrucțiunea bloc implicită este executată.
  • În implementarea Python a instrucțiunilor switch, considerăm dicționarul Python drept comutatorul și tastele dicționarului ca fiind cazuri. Aici apelăm funcția get () a dicționarului cu argumentele necesare, adică cheie de intrare și valoare implicită.
  • Dacă tasta de intrare se potrivește cu oricare dintre tastele dicționarului, atunci valoarea corespunzătoare este returnată. Cu toate acestea, dacă cheia de intrare nu se potrivește cu oricare dintre tastele de dicționar, atunci valoarea implicită va fi returnată.

Implementarea declarației Switch în Python

După cum știm, instrucțiunea de tip switch și instrucțiunea if-else-if scara sunt alternative una față de alta. Ambele pot fi utilizate pentru a atinge același scop, dar o instrucțiune de tip switch oferă o performanță mai bună și un cod mai ușor de gestionat decât o instrucțiune if-else-if ladder. Limba Python nu are instrucțiuni de comutare, dar putem implementa o funcționalitate similară folosind Python Dictionary.

În secțiunea următoare, vom vedea implementarea fiecăruia cu un exemplu.

Exemplul # 1

Utilizarea scării if-else-if - O alternativă pentru a comuta situația cazului. În acest exemplu, am folosit declarația if-else-if ladder pentru a obține ziua săptămânii. Pentru același caz de utilizare, vom vedea și implementarea stării de comutare în Python.

Cod:

def get_week_day(argument):
if(argument == 0):
day="Sunday"
elif(argument == 1):
day="Monday"
elif(argument == 2):
day="Tuesday"
elif(argument == 3):
day="Wednesday"
elif(argument == 4):
day="Thursday"
elif(argument == 5):
day="Friday"
elif(argument == 6):
day="Saturday"
else:
day="Invalid day"
return day
# Driver program
if __name__ == "__main__":
print (get_week_day(6))
print (get_week_day(8))
print (get_week_day(0))

ieşire:

Exemplul # 2

Implementarea instrucțiunii switch utilizând Dicționarul șirurilor. Limba Python nu are instrucțiuni de comutare. Cu toate acestea, putem implementa în mod eficient o caracteristică de instrucțiune de comutare în Python folosind Dicționar ca mai jos.

Explicație: Dicționar în Python este o colecție neordonată de perechi de chei și valori. În fragmentul de mai jos al codului, comutatorul este o variabilă de dicționar care ține cheia: perechi de valori similare cazurilor similare comutatorului.

Folosind metoda get (), putem accesa articolul din dicționar trecând argumentele ca cheie și valoarea opțională implicită. Valoarea implicită ajută la implementarea „cazului implicit” al unei instrucțiuni de comutare.

Cod:

def get_week_day(argument):
switcher = (
0: "Sunday",
1: "Monday",
2: "Tuesday",
3: "Wednesday",
4: "Thursday",
5: "Friday",
6: "Saturday"
)
return switcher.get(argument, "Invalid day")
# Driver program
if __name__ == "__main__":
print (get_week_day(6))
print (get_week_day(8))
print (get_week_day(0))

ieşire:

În acest exemplu, să trecem 6 ca argument de intrare sau cheie de intrare care va fi căutată în tastele dicționarului (comutator). Pe măsură ce se găsește cheia = 6, atunci va returna valoarea ca sâmbătă. Acum treceți 8 ca cheie de intrare, care vor fi căutate în tastele dicționarului (comutator). Deoarece cheia = 8 nu este găsită, atunci va returna valoarea implicită ca Invalid day.

Exemplul # 3

Implementarea instrucțiunii switch utilizând funcționarea dicționarului funcțiilor. În exemplul de mai sus, valorile dicționarului sunt de tip string date, adică constante. Dar este interesant de știut că valorile unui dicționar Python pot fi de orice tip de date.

Valorile unui dicționar Python pot fi constante (numere întregi, șiruri), precum și funcții. În acest exemplu, vom implementa instrucțiunea switch care va suporta, de asemenea, apelul funcțional pentru fiecare caz de comutare, folosind dicționarul funcțiilor de mai jos.

Cod:

def get_week_day(argument):
def zero():
return "Sunday"
def one():
return "Monday"
def two():
return "Tuesday"
def three():
return "Wednesday"
def four():
return "Thursday"
def five():
return "Friday"
def six():
return "Saturday"
switcher = (
0: zero(),
1: one(),
2: two(),
3: three(),
4: four(),
5: five(),
6: six()
)
return switcher.get(argument, "Invalid day")
# Driver program
if __name__ == "__main__":
print (get_week_day(6))
print (get_week_day(8))
print (get_week_day(0))

ieșire:

Concluzie

Așa cum am văzut mai sus, același caz de utilizare poate fi pus în aplicare atât prin instrucțiunea de tip switch, cât și de instrucțiunea if-else-if. Însă declarația lui Switch oferă un cod mai ușor de gestionat și de citit decât instrucțiunea ladder-if-else. Am văzut de asemenea că limbajul Python nu are instrucțiuni de comutare, dar putem implementa același lucru într-un mod mai eficient folosind Dicționarul Python.

Articole recomandate

Acesta este un ghid pentru declarația de comutare Python. Aici discutăm sintaxa, diagramă de flux și funcționarea instrucțiunii de comutare piton împreună cu exemple și implementare. De asemenea, puteți consulta următoarele articole pentru a afla mai multe-

  1. Moștenire în Python
  2. Supraîncărcarea Python
  3. Dicționar în Python
  4. Dicționar în Python