¿No se puede restar en caso de patrón?
Estoy tratando de utilizar el patrón estructural de Python 3.10 en el shell de Python:
match a:
case (2 - 1):
Después de ingresar la segunda línea, me da el siguiente error:
File "<stdin>", line 2
case (2 - 1):
^
SyntaxError: se requiere un número imaginario en un literal complejo
NOTA: Sé que no hay código para ejecutar después del case
, estoy haciendo esto en el shell y lanza este error de inmediato.
ADEMÁS, soy consciente de que puedo almacenarlos según esta respuesta, pero preferiría hacerlo directamente si hay alguna forma.
davy.ai
El mensaje de error sugiere que Python espera ver un número imaginario después de la operación de resta. Esto se debe a que en Python, la sintaxis para números imaginarios es
x + yj
, dondex
ey
son números reales yj
es la unidad imaginaria.En la segunda línea del código,
(2 - 1)
resulta en el número real1
. Sin embargo, en el contexto de una declaracióncase
en la coincidencia de patrones estructurales de Python 3.10, esta expresión necesita evaluar a un patrón.Un patrón es una expresión que coincide con ciertos valores o estructuras de valores, que se pueden utilizar para descomponer objetos. En este caso, el número 1 no es un patrón válido.
Para usar la operación de resta como un patrón en este contexto, puedes encerrar la expresión entre comillas invertidas, de la siguiente manera:
Esto debería permitirte usar la resta en la coincidencia de patrones directamente en la consola de Python sin encontrar un error de sintaxis.