Tengo un programa Python con una condición if que verifica si un elemento NO está en el diccionario y arroja un error si no lo está. De lo contrario, el código debería seguir ejecutándose. Sin embargo, recibo un error de "sintaxis no válida" relacionado con la siguiente línea de código después de la condición if y no puedo entender por qué. La línea de código funciona bien si se ejecuta sola, pero no si se ejecuta junto con la instrucción if. Tengo varias excepciones en el programa, por lo que no deseo tenerlas y el código restante contenido en una jerarquía de condiciones elif. A mi entender, no puedo ver nada malo con este código, por lo que agradecería si alguien puede señalar qué está causando esto.

Aquí hay un fragmento de código de ejemplo que también produce el mismo error y el mensaje de error asociado.

Ejemplo de código:

item = 'a'
item_dict = {
    'a': ['A1','A2','A3'],
    }

if item not in item_dict:
    raise Exception("Error")

# Extract the relevant add on codes from the dictionary.
item_codes = item_dict.get(item)

Mensaje de error:

File "<stdin>", line 5
item_codes = item_dict.get(item)
         ^
SyntaxError: invalid syntax

EDITAR: He corregido errores tipográficos en el código de ejemplo y todavía recibo el mismo error de sintaxis. Tenga en cuenta que el error solo ocurre si ejecuto este bloque de código como uno. Si lo ejecuto todo, excluyendo la línea inferior que asigna la variable item_codes y luego ejecuta esa línea sola, está bien y produce los resultados esperados, pero el código que estoy escribiendo requiere que se ejecute como un programa completo.

0
Wolff 3 ene. 2020 a las 13:42

3 respuestas

La única forma en que puedo reproducir su error de sintaxis es si dejo una llave de cierre en la línea anterior, por ejemplo

item = 'a'
items_dict = {
    'a': ['A1','A2','A3'],
    }
if item not in items_dict:
    raise Exception("Error"   #here i have left off the closing parenthesis

item_codes = items_dict.get(item)

#ERROR#
  File "<ipython-input-13-919d98974d80>", line 5
    item_codes = items_dict.get(item)
             ^
SyntaxError: invalid syntax

Verifique dos veces las líneas antes de codificar para ver si se ha perdido una llave de cierre o un qoute o algo

0
Chris Doyle 3 ene. 2020 a las 10:54

No le diste una nueva línea después del bloque if. No cambié nada más y está funcionando.

item = 'a'
item_dict = {'a': ['A1','A2','A3']}

if item not in item_dict:
    raise Exception("Error")

item_codes = item_dict.get(item)

Mira esto

>>> if item not in item_dict:
...   print("hi")
... print("hhi")
  File "<stdin>", line 3
    print("hhi")
        ^
SyntaxError: invalid syntax

En el cmd, la instrucción after if se trata como parte de ese if, por lo que se espera una pestaña.

Necesita agregar una nueva línea, eso es todo.

1
Andy_101 3 ene. 2020 a las 10:59

Parece que tienes un error de ortografía.

Eliminar los s de items_dict.

Funciona de mi lado

-1
François 3 ene. 2020 a las 10:47