Nel mondo della programmazione, gestione delle strutture condizionali รจ fondamentale per l’esecuzione di operazioni differenti basate su valori specifici. Python ha introdotto una nuova modalitร di implementazione delle istruzioni condizionali con il match-case, una funzionalitร disponibile a partire dalla versione 3.10. In questo articolo esploreremo come utilizzare questo nuovo costrutto in python per simulare uno switch case, consentendo ai programmatori di scrivere codice piรน chiaro e conciso.
Il case switch รจ una struttura di controllo comune a molti linguaggi di programmazione, come Java e C++, che permette di eseguire operazioni diverse in base al valore di una variabile di controllo.
Fino alla versione 3.10, Python non aveva una funzionalitร integrata per implementare gli switch statement, costringendo i programmatori a utilizzare if
ed elif
per gestire le diverse condizioni. Questa limitazione ha reso il codice a volte meno leggibile e piรน difficile da mantenere.
Fortunatamente, con l’introduzione del structural pattern matching, ora รจ possibile implementare uno switch in Python utilizzando le parole chiave match
e case
.
In questa lezione, vedremo come simulare uno switch in Python in modo del tutto simile alle strutture dei linguaggi precedentemente menzionati.
Creare una struttura condizionale con if ed elif
Supponiamo di dover verificare il valore di una variabile โgiornoโ e di stampare un testo diverso a seconda del suo valore. 1 corrisponderร a โLunedรฌโ, 2 a โMartedรฌโ e cosรฌ via. Dobbiamo anche stampare un messaggio di errore nel caso in cui il valore non rientri nei valori validi da 1 a 7.
Ecco un esempio usando una struttura condizionale del tipo if – elif:
giorno = 3
if giorno == 1:
print("Lunedรฌ")
elif giorno == 2:
print("Martedรฌ")
elif giorno == 3:
print("Mercoledรฌ")
elif giorno == 4:
print("Giovedรฌ")
elif giorno == 5:
print("Venerdรฌ")
elif giorno == 6:
print("Sabato")
elif giorno == 7:
print("Domenica")
else:
print("Giorno non valido")
In questo codice, controlliamo il valore della variabile โgiornoโ e stampiamo il nome del giorno della settimana corrispondente, oppure โGiorno non validoโ se il valore non รจ valido.
Creare uno switch case in Python
A partire dalla versione 3.10, Python offre la possibilitร di “riscrivere” questa struttura in modo piรน “elegante” utilizzando il costrutto match – case col quale รจ possibile simulare uno switch case.
La sintassi di match – case
match variabile:
case valore-1:
azione-1
case valore-2:
azione-2
case valore-3:
azione-3
case _:
azione-default
Nota che il simbolo underscore (_) viene utilizzato per definire il caso di default nello switch statement in Python.
Un esempio di switch case in Python
def switch(giorno):
match giorno:
case 1:
return "Lunedรฌ"
case 2:
return "Martedรฌ"
case 3:
return "Mercoledรฌ"
case 4:
return "Giovedรฌ"
case 5:
return "Venerdรฌ"
case 6:
return "Sabato"
case 7:
return "Domenica"
case _:
return "Giorno non valido"
Possiamo richiamare il nostro switch in questo modo:
print(switch(1))
print(switch(5))
print(switch(8))
Il risultato sarร :
Lunedรฌ Venerdรฌ Giorno non valido
In questo esempio, abbiamo definito una funzione โswitchโ che restituisce il nome del giorno della settimana corrispondente al valore della variabile โgiornoโ. La funzione utilizza la sintassi match-case per eseguire operazioni diverse in base al valore di โgiornoโ. Se la variabile contiene uno dei valori previsti, la funzione restituisce il nome del giorno della settimana corrispondente. In caso contrario, viene restituito il messaggio โGiorno non validoโ.
Considerazioni finali
In entrambi gli esempi, abbiamo utilizzato una struttura di controllo di flusso per gestire condizioni diverse in base al valore di una singola variabile di controllo.
Inoltre, la sintassi if-elif appare meno efficiente rispetto alla sintassi match-case, la quale offre una soluzione piรน โpulitaโ e moderna. Tuttavia, occorre considerare che la sintassi match-case non รจ supportata nelle versioni precedenti di Python.
In sintesi, gli switch statement in Python possono essere implementati utilizzando la sintassi if-elif o match-case. La scelta della sintassi dipende dalla versione di Python utilizzata e dallo stile di programmazione preferito. L’adozione del match-case non solo semplifica il codice, ma ne migliora anche la leggibilitร , rendendo la manutenzione piรน agevole.