logo

Dichiarazione del caso di corrispondenza Python

Gli sviluppatori che provengono da linguaggi come C/C++ o Java sanno che esiste un'istruzione condizionale nota come a Scatola dell'interruttore . Questo Caso di corrispondenza è lo Switch Case di Python che è stato introdotto in Pitone 3.10. Qui dobbiamo prima passare un parametro e poi provare a verificare in quale caso il parametro viene soddisfatto. Se troviamo una corrispondenza eseguiremo del codice e se non c'è alcuna corrispondenza, avrà luogo un'azione predefinita.

Sintassi dell'istruzione Match Case di Python

L'istruzione match case in Python è inizializzata con il incontro parola chiave seguita dal parametro da abbinare. Quindi vari casi vengono definiti utilizzando il caso parola chiave e il modello per abbinare il parametro. IL _ è il carattere jolly che viene eseguito quando tutti i casi non corrispondono al valore del parametro.



match parameter: case pattern1: # code for pattern 1 case pattern2: # code for pattern 2 . . case patterN: # code for pattern N case _: # default code block>

Tabella dei contenuti

stringa inversa java

Ora vediamo alcuni esempi per sapere come funziona l'istruzione match case in Python.

Dichiarazione semplice del caso di corrispondenza

In una semplice istruzione match case di Python, il valore esatto viene confrontato e abbinato al valore del modello case. Esistono diversi casi di test e il codice corrispondente che verrà eseguito solo quando un caso viene abbinato. Altrimenti, esiste un caso predefinito che viene eseguito quando tutti i casi definiti non corrispondono.



Esempio: In questo esempio chiederemo all'utente di inserire un valore compreso tra 1 e 3 e visualizzare il numero corrispondente in parole utilizzando la semplice istruzione match case.

Pitone
# simple match case statement def runMatch(): num = int(input('Enter a number between 1 and 3: ')) # match case match num: # pattern 1 case 1: print('One') # pattern 2 case 2: print('Two') # pattern 3 case 3: print('Three') # default pattern case _: print('Number not between 1 and 3') runMatch()>

Produzione:

Enter a number between 1 and 3: 5 Number not between 1 and 3>

Abbina la dichiarazione del caso con l'operatore OR

Caso di corrispondenza in Python sono destinate solo alla corrispondenza dei modelli e di parole chiave o parametri specifici. Ma possiamo anche usare l'istruzione match case in Python quando c'è più di un caso che dà come risultato lo stesso output. In questo caso, possiamo utilizzare l'operatore pipe, noto anche come operatore OR nell'istruzione match case.



Esempio: In questo esempio chiederemo all'utente di inserire un valore compreso tra 1 e 6. Quindi, utilizzando l'operatore maiuscole e minuscole con l'operatore OR, abbiamo bastonato le coppie di 1 caso ciascuna che visualizzerà il numero corrispondente in parole.

Pitone
# python match case with OR operator def runMatch(): num = int(input('Enter a number between 1 and 6: ')) # match case match num: # pattern 1 case 1 | 2: print('One or Two') # pattern 2 case 3 | 4: print('Three or Four') # pattern 3 case 5 | 6: print('Five or Six') # default pattern case _: print('Number not between 1 and 6') runMatch()>

Produzione:

Enter a number between 1 and 6: 4 Three or Four>

Abbina l'istruzione Case con Python If Condition

Possiamo anche usare il Python Se condizione insieme all'istruzione match case quando invece di corrispondere al valore esatto, utilizziamo una condizione. In base alla condizione, se il valore è True e corrisponde al modello case, viene eseguito il blocco di codice.

Esempio: In questo esempio, utilizzeremo la condizione if insieme all'istruzione match case per verificare se un numero immesso dall'utente ha un ID positivo, negativo o zero.

Pitone
# python match case with if condition def runMatch(): num = int(input('Enter a number: ')) # match case match num: # pattern 1 case num if num>0: print('Positivo') # modello 2 case num se num< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Produzione:

Enter a number: -15 Negative>

Abbina maiuscole e minuscole al modello di sequenza

Le dichiarazioni di maiuscole e minuscole di Python vengono comunemente utilizzate per abbinare modelli di sequenza come elenchi e stringhe. È abbastanza semplice e può utilizzare argomenti posizionali per verificare i modelli.

Esempio: In questo esempio, stiamo utilizzando una stringa Python per verificare se un carattere è presente nel file corda o non utilizzare maiuscole e minuscole. Forniamo la stringa insieme all'indice del carattere che vogliamo verificare nella stringa nel caso della corrispondenza. Quindi abbiamo definito i casi di corrispondenza in base a quale potrebbe essere quel personaggio.

Pitone
# match case to check a character in a string def runMatch(): myStr = 'Hello World' # match case match (myStr[6]): case 'w': print('Case 1 matches') case 'W': print('Case 2 matches') case _: print('Character not in the string') runMatch()>

Produzione:

Case 2 matches>

Esempio: In questo esempio stiamo usando a elenco Python per la corrispondenza dei modelli. Stiamo facendo corrispondere il primo elemento dell'elemento perduto e abbiamo utilizzato anche argomenti posizionali per corrispondere al resto dell'elenco.

Pitone
# python match case with list def runMatch(mystr): # match case match mystr: # pattern 1 case ['a']: print('a') # pattern 2 case ['a', *b]: print(f'a and {b}') # pattern 3 case [*a, 'e'] | (*a, 'e'): print(f'{a} and e') # default pattern case _: print('No data') runMatch([]) runMatch(['a']) runMatch(['a', 'b']) runMatch(['b', 'c', 'd', 'e'])>

Produzione:

No data a a and ['b'] ['b', 'c', 'd'] and e>

Abbina la dichiarazione di maiuscole e minuscole con il dizionario Python

Python può gestire le istruzioni match case dizionario anche. Può corrispondere a una singola chiave o a più chiavi. Le chiavi e i valori devono risiedere nel dizionario. Se è presente un valore fuori posto o una chiave che non esiste e non corrisponde al dizionario e al valore effettivi, il caso verrà scartato.

come ottenere emoji per iPhone su Android

Esempio: In questo esempio, stiamo utilizzando il dizionario con l'istruzione match case in Python. Forniamo dizionari con dati diversi per la corrispondenza tra maiuscole e minuscole e corrisponderà alle chiavi del dizionario con i diversi casi forniti.

Pitone
# match case with python dictionaryu def runMatch(dictionary): # match case match dictionary: # pattern 1 case {'name': n, 'age': a}: print(f'Name:{n}, Age:{a}') # pattern 2 case {'name': n, 'salary': s}: print(f'Name:{n}, Salary:{s}') # default pattern case _ : print('Data does not exist') runMatch({'name': 'Jay', 'age': 24}) runMatch({'name': 'Ed', 'salary': 25000}) runMatch({'name': 'Al', 'age': 27}) runMatch({})>

Produzione:

Name:Jay, Age:24 Name:Ed, Salary:25000 Name:Al, Age:27 Data does not exist>

Abbina l'istruzione maiuscole e minuscole alla classe Python

Possiamo anche usare Classi Python per abbinare i casi utilizzando le istruzioni Python match case. Ciò renderà il codice molto pulito, ordinato e, soprattutto, facilmente leggibile. Fa uso del modulo Python dataclasses.

Esempio: In questo esempio, abbiamo creato due classi chiamate Persona e Programmatore. Il primo pensiero dopo aver visto l'istruzione match sarebbe che il Programmatore e la Persona all'interno dell'istruzione match creerebbero un'istanza delle rispettive classi, ma non è così. Verificherà l'istanza con i valori specificati. Quindi il caso Programmer(Om, linguaggio = Python, framework = Django) non creerà un'istanza ma controllerà che l'oggetto passato il cui nome è istanza sia un'istanza reale della classe Programmer, quindi controllerà il nome che è Om , linguaggio che è Python e poi framework che è Django. In questo modo possiamo verificare i valori nell'istanza di qualsiasi classe.

Pitone
# match case with python classes # import dataclass module from dataclasses import dataclass #Class 1 @dataclass class Person: name: str age: int salary: int # class 2 @dataclass class Programmer: name: str language: str framework: str def runMatch(instance): # match case match instance: # pattern 1 case Programmer('Om', language='Python', framework='Django'): print(f'Name: Om, Language:Python, Framework:Django') # pattern 2 case Programmer('Rishabh', 'C++'): print('Name:Rishabh, Language:C++') # pattern 3 case Person('Vishal', age=5, salary=100): print('Name:Vishal') # pattern 4 case Programmer(name, language, framework): print(f'Name:{name}, Language:{language}, Framework:{framework}') # pattern 5 case Person(): print('He is just a person !') # default case case _: print('This person is nothiing!') programmer1 = Programmer('Om', 'Python', 'Django') programmer2 = Programmer('Rishabh', 'C++', None) programmer3 = Programmer('Sankalp', 'Javascript', 'React') person1 = Person('Vishal', 5, 100) runMatch(programmer1) runMatch(programmer2) runMatch(person1) runMatch(programmer3)>

Produzione:

Name: Om, Language:Python, Framework:Django Name:Rishabh, Language:C++ Name:Vishal Name:Sankalp, Language:Javascript, Framework:React>

Domande frequenti sulla dichiarazione dei casi di corrispondenza Python

D: Qual è l'istruzione match case in Python?

R: L'istruzione match-case, nota anche come pattern match, è una funzionalità introdotta in Python 3.10. Fornisce un modo conciso ed espressivo per eseguire la corrispondenza dei modelli su strutture di dati, come tuple, elenchi e classi. Ti consente di abbinare il valore di un'espressione a una serie di modelli ed eseguire il blocco di codice corrispondente per il modello corrispondente.

D: In cosa differisce l'istruzione match case dalle istruzioni if-elif-else?

R: L'istruzione match-case è un costrutto più potente ed espressivo rispetto alle istruzioni if-elif-else. Mentre le istruzioni if-elif-else si basano su espressioni booleane, le istruzioni match-case possono corrispondere a modelli basati sulla struttura e sul valore dei dati. Le istruzioni match-case forniscono un modo più strutturato e leggibile per gestire più condizioni ed eseguire azioni diverse in base a tali condizioni.

D: Quali sono i vantaggi derivanti dall'utilizzo dell'istruzione match-case?

R: L'istruzione match-case offre numerosi vantaggi, tra cui:

  • Concisione: le dichiarazioni di corrispondenza consentono di esprimere una logica di ramificazione complessa in modo conciso e leggibile.
  • Leggibilità: la corrispondenza dei modelli rende il codice più leggibile e autoesplicativo, poiché assomiglia molto al dominio del problema.
  • Sicurezza: le istruzioni match-case forniscono una corrispondenza esaustiva dei modelli, garantendo che tutti i casi possibili vengano gestiti.