logo

Declaración de caso de coincidencia de Python

Los desarrolladores que provienen de lenguajes como C/C++ o Java saben que existe una declaración condicional conocida como Caja del interruptor . Este Caso de partido es el caso Switch de Python que se introdujo en Pitón 3.10. Aquí primero tenemos que pasar un parámetro y luego intentar verificar en qué caso se cumple el parámetro. Si encontramos una coincidencia, ejecutaremos algún código y si no hay ninguna coincidencia, se llevará a cabo una acción predeterminada.

Sintaxis de declaración de caso de coincidencia de Python

La declaración de caso de coincidencia en Python se inicializa con el fósforo palabra clave seguida del parámetro que debe coincidir. Luego se definen varios casos usando el caso palabra clave y el patrón para que coincida con el parámetro. El _ es el carácter comodín que se ejecuta cuando todos los casos no coinciden con el valor del parámetro.



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

Tabla de contenidos

convertir string a date

Ahora, veamos algunos ejemplos para saber cómo funciona la declaración de caso de coincidencia en Python.

Declaración de caso de coincidencia simple

En una simple declaración de caso de coincidencia de Python, el valor exacto se compara y coincide con el valor del patrón de caso. Hay diferentes casos de prueba y su código correspondiente que se ejecutará solo cuando coincida un caso. De lo contrario, hay un caso predeterminado que se ejecuta cuando no coinciden todos los casos definidos.



Ejemplo: En este ejemplo, le pediremos al usuario que ingrese un valor entre 1 y 3 y muestre su número correspondiente en palabras usando la simple declaración de coincidencia de casos.

Pitón
# 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()>

Producción:

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

Coincidencia de declaración de caso con operador OR

caso de partido Las declaraciones en Python están destinadas a coincidir únicamente con los patrones y palabras clave o parámetros específicos. Pero también podemos usar la declaración de caso de coincidencia en Python cuando hay más de un caso que da como resultado el mismo resultado. En este caso, podemos utilizar el operador de tubería, también conocido como operador OR en la declaración de caso de coincidencia.



Ejemplo: En este ejemplo, le pediremos al usuario que ingrese un valor entre 1 y 6. Luego, usando la combinación de mayúsculas y minúsculas con el operador OR, hemos agrupado los pares en 1 mayúscula cada uno, lo que mostrará su número correspondiente en palabras.

Pitón
# 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()>

Producción:

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

Coincidir con la declaración de caso con la condición If de Python

También podemos utilizar el Python si condición junto con la declaración de caso de coincidencia cuando, en lugar de hacer coincidir el valor exacto, usamos una condición. Según la condición, si el valor es Verdadero y coincide con el patrón de casos, se ejecuta el bloque de código.

Ejemplo: En este ejemplo, usaremos la condición if junto con la declaración de caso de coincidencia para verificar si un número ingresado con la identificación del usuario es positivo, negativo o cero.

Pitón
# 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') # patrón 2 caso núm si núm< 0: print('Negative') # default pattern case _: print('Zero') runMatch()>

Producción:

Enter a number: -15 Negative>

Coincidir caso con el patrón de secuencia

Las declaraciones de coincidencia de casos de Python se usan comúnmente para hacer coincidir patrones de secuencia como listas y cadenas. Es bastante fácil y puede utilizar argumentos posicionales para comprobar los patrones.

Ejemplo: En este ejemplo, estamos usando una cadena de Python para verificar si un carácter está presente en el cadena o no usar mayúsculas y minúsculas. Proporcionamos la cadena junto con el índice del carácter que queremos verificar en la cadena para el caso de coincidencia. Luego definimos los casos de coincidencia en cuanto a cuál podría ser ese personaje.

Pitón
# 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()>

Producción:

Case 2 matches>

Ejemplo: En este ejemplo estamos usando un lista de pitón para combinar patrones. Estamos haciendo coincidir el primer elemento de los argumentos posicionales perdidos y también usamos para que coincida con el resto de la lista.

lista de matrices en java
Pitón
# 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'])>

Producción:

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

Coincidir declaración de caso con el diccionario Python

Las declaraciones de casos de coincidencia de Python pueden manejar diccionario también. Puede coincidir con una sola clave o con varias claves. Las claves y los valores deben residir en el diccionario; si hay algún valor fuera de lugar o alguna clave que no existe y no coincide con el diccionario y el valor reales, ese caso se descartará.

Ejemplo: En este ejemplo, estamos usando un diccionario con una declaración de coincidencia de casos en Python. Proporcionamos diccionarios con datos diferentes para el caso coincidente y coincidirá con las claves del diccionario con los diferentes casos proporcionados.

Pitón
# 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({})>

Producción:

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

Declaración de caso coincidente con la clase Python

También podemos usar Clases de Python para hacer coincidir casos utilizando las declaraciones de casos de coincidencia de Python. Esto hará que el código sea mucho más limpio, ordenado y, lo que es más importante, fácilmente legible. Hace uso del módulo de clases de datos de Python.

Ejemplo: En este ejemplo, creamos dos clases llamadas Persona y Programador. El primer pensamiento después de ver la declaración de coincidencia sería que el programador y la persona dentro de la declaración de coincidencia crearían una instancia de las clases respectivas, pero no es el caso. Buscará la instancia con los valores dados. Entonces, el caso Programador (Om, lenguaje = Python, marco = Django) no creará una instancia, pero verificará que el objeto pasado cuyo nombre es instancia es una instancia real de la clase Programador, luego verificará el nombre que es Om. , lenguaje que es Python y luego framework que es Django. De esta manera podemos verificar los valores en la instancia de cualquier clase.

Pitón
# 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)>

Producción:

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

Preguntas frecuentes sobre la declaración de caso de coincidencia de Python

P: ¿Qué es la declaración de caso de coincidencia en Python?

R: La declaración match-case, también conocida como coincidencia de patrones, es una característica introducida en Python 3.10. Proporciona una forma concisa y expresiva de realizar coincidencias de patrones en estructuras de datos, como tuplas, listas y clases. Le permite hacer coincidir el valor de una expresión con una serie de patrones y ejecutar el bloque de código correspondiente para el patrón coincidente.

P: ¿En qué se diferencia la declaración de caso de coincidencia de las declaraciones if-elif-else?

R: La declaración match-case es una construcción más poderosa y expresiva en comparación con las declaraciones if-elif-else. Mientras que las declaraciones if-elif-else se basan en expresiones booleanas, las declaraciones match-case pueden coincidir con patrones basados ​​en la estructura y el valor de los datos. Las declaraciones Match-case proporcionan una forma más estructurada y legible de manejar múltiples condiciones y realizar diferentes acciones en función de esas condiciones.

P: ¿Cuáles son los beneficios de utilizar la declaración match-case?

R: La declaración de caso coincidente ofrece varios beneficios, entre ellos:

  • Concisión: las declaraciones Match-case le permiten expresar una lógica de ramificación compleja de una manera concisa y legible.
  • Legibilidad: la coincidencia de patrones hace que el código sea más legible y se explique por sí mismo, ya que se parece mucho al dominio del problema.
  • Seguridad: las declaraciones Match-case proporcionan una coincidencia de patrones exhaustiva, lo que garantiza que se manejen todos los casos posibles.