Introduzione all'istruzione Python Switch

Un'istruzione switch è una funzione di programmazione molto utile e potente. È un'alternativa all'istruzione ladder if-else-if e offre prestazioni migliori e un codice più gestibile rispetto a un'istruzione ladder if-else-if. La maggior parte dei linguaggi di programmazione (come Java, C, ecc.) Offrono istruzioni switch ma il linguaggio Python non ha istruzioni switch. Tuttavia, se ti piace cambiare le istruzioni del caso, esiste un modo molto efficace per implementare una funzione di istruzione del caso in Python. Questo tutorial ti aiuterà a implementarlo.

Diagramma di flusso

L'istruzione switch in ogni linguaggio di programmazione ha le stesse funzionalità ma una sintassi leggermente diversa. Il linguaggio Python non fornisce alcuna istruzione switch incorporata. Possiamo implementare questa funzione con lo stesso flusso e funzionalità ma con sintassi e implementazione diverse usando Python Dictionary.

Sintassi dell'istruzione Switch

Guarda solo le due diverse sintassi seguenti dell'istruzione switch. La prima istruzione mostra la sintassi standard delle istruzioni switch in altri linguaggi di programmazione come C, Java, ecc. La seconda istruzione è l'implementazione Python dell'istruzione Switch. È possibile stabilire chiaramente in che modo entrambe sono simili per funzionalità ma diverse per implementazione.

1. Passa in altre lingue (c, Java, ..)

Sintassi:

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. Cambia implementazione in Python

Sintassi:

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")

Funzionamento dell'istruzione Switch

  • Il funzionamento dell'istruzione switch standard in qualsiasi linguaggio di programmazione è simile. Consiste in più casi ciascuno con un blocco di codice e un'istruzione break.
  • L'argomento di input viene confrontato con più casi uno dopo l'altro. Se l'argomento corrisponde a uno dei casi, viene eseguita l'istruzione di blocco corrispondente e il controllo esce dall'istruzione switch in corrispondenza dell'istruzione break.
  • Se nessuno dei casi corrisponde all'argomento input, viene eseguita l'istruzione di blocco predefinita.
  • Nell'implementazione Python delle istruzioni switch, consideriamo il dizionario Python come lo switch e le chiavi del dizionario come casi. Qui chiamiamo la funzione get () del dizionario con argomenti richiesti, ovvero chiave di input e un valore predefinito.
  • Se la chiave di input corrisponde a una qualsiasi delle chiavi del dizionario, viene restituito il valore corrispondente. Tuttavia, se la chiave di input non corrisponde a nessuna delle chiavi del dizionario, verrà restituito il valore predefinito.

Implementazione dell'istruzione Switch in Python

Come sappiamo, l'istruzione switch case e l'istruzione ladder if-else-if si alternano. Entrambi possono essere utilizzati per raggiungere lo stesso scopo, ma un'istruzione case switch fornisce prestazioni migliori e un codice più gestibile rispetto a un'istruzione ladder if-else-if. Il linguaggio Python non ha alcuna istruzione switch, ma possiamo implementare una funzionalità simile usando Python Dictionary.

Nella sezione seguente vedremo l'implementazione di ciascuno con l'esempio.

Esempio 1

Uso di ladder if-else-if - Un'alternativa per cambiare l'istruzione case. In questo esempio, abbiamo usato l'istruzione ladder if-else-if per ottenere il giorno della settimana. Per lo stesso caso d'uso, vedremo anche l'implementazione dello stato switch in Python.

Codice:

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))

Produzione:

Esempio n. 2

Implementazione dell'istruzione switch utilizzando Dictionary of Strings. Il linguaggio Python non ha alcuna istruzione switch. Tuttavia, possiamo implementare in modo efficiente una funzione dell'istruzione switch in Python usando Dizionario come di seguito.

Spiegazione: Dizionario in Python è una raccolta non ordinata di coppie chiave e valore. Nello snippet di codice seguente, lo switcher è una variabile del dizionario che contiene chiave: coppie di valori simili ai casi di tipo switch.

Usando il metodo get (), possiamo accedere all'elemento del dizionario passando gli argomenti come chiave e il valore predefinito opzionale. Il valore predefinito consente di implementare il "caso predefinito" di un'istruzione switch.

Codice:

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))

Produzione:

In questo esempio, passiamo 6 come argomento di input o chiave di input che verrà cercato nelle chiavi del dizionario (switcher). Quando viene trovata la chiave = 6, restituirà il valore come sabato. Ora passa 8 come chiave di input che verrà cercato nei tasti del dizionario (switcher). Poiché la chiave = 8 non viene trovata, restituirà il valore predefinito come Giorno non valido.

Esempio n. 3

Implementazione dell'istruzione switch mediante Mappatura dizionario delle funzioni. Nell'esempio sopra, i valori del dizionario sono del tipo di dati stringa ovvero costanti. Ma è interessante sapere che i valori di un dizionario Python possono essere di qualsiasi tipo di dati.

I valori di un dizionario Python possono essere costanti (numeri interi, stringhe) e funzioni. In questo esempio, implementeremo l'istruzione switch che supporterà anche la chiamata di funzione per ogni caso switch utilizzando il dizionario delle funzioni come di seguito.

Codice:

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))

produzione:

Conclusione

Come abbiamo visto sopra, lo stesso caso d'uso può essere implementato sia dall'istruzione switch case sia dall'istruzione ladder if-else-if. Ma l'istruzione di Switch fornisce un codice più gestibile e leggibile rispetto all'istruzione ladder if-else-if. Abbiamo anche visto che il linguaggio Python non ha alcuna istruzione switch, ma possiamo implementare lo stesso in un modo più efficiente usando Python Dictionary.

Articoli consigliati

Questa è una guida all'istruzione Python Switch. Qui discutiamo la sintassi, il diagramma di flusso e il funzionamento dell'istruzione switch Python insieme agli esempi e all'implementazione. Puoi anche consultare i seguenti articoli per saperne di più-

  1. Eredità in Python
  2. Sovraccarico di Python
  3. Dizionario in Python
  4. Dizionario in Python

Categoria: