es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , , , ,

Answer

  1. Avatar for 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, donde x e y son números reales y j es la unidad imaginaria.

    En la segunda línea del código, (2 - 1) resulta en el número real 1. Sin embargo, en el contexto de una declaración case 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:

    match a:
       case `2 - 1`:
           # Ejecutar código cuando a sea igual a 1
    

    Esto debería permitirte usar la resta en la coincidencia de patrones directamente en la consola de Python sin encontrar un error de sintaxis.

Comments are closed.