/ / eval SyntaxError: sintassi non valida in python - python

eval SyntaxError: sintassi non valida in python - python

Voglio assegnare:

x0="123"
x1="123"
x2="123"
x3="123"
x4="123"
x5="123"
x6="123"
x7="123"
x8="123"
x9="123"

Scrivo il codice per esprimere che posso ottenere l'output di una stringa 123 quando input x1 o x8 .

for i in range(0,10):
eval("x"+str(i)+"="123"")

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<string>", line 1
x0="123"
^
SyntaxError: invalid syntax

Come posso fare in questo modo?

risposte:

7 per risposta № 1

Per l'esecuzione dinamica delle dichiarazioni usate exec dichiarazione.

>>> exec("y=3")
>>> y
3

Eval Usgae:eval(expression)

Il expression argomento è analizzato e valutato come un'espressione Python

per esempio:

>>> s=3
>>> eval("s==3")
True
>>> eval("s + 1")
4
>>> eval("s")
3
>>> eval("str(s)+"test"")
"3test"

12 per risposta № 2

eval() consente solo espressioni. L'assegnazione non è un'espressione, ma un'affermazione; dovresti usare exec anziché.

Anche allora potresti usare il globals() dizionario per aggiungere nomi allo spazio dei nomi globale e non è necessario utilizzare un'espressione di espressione arbitraria.

tu veramente non voglio fare questo, è necessario mantenere i dati fuori dai nomi delle variabili e utilizzare invece un elenco o un dizionario:

x = ["123"] * 10

ti darebbe una lista che puoi indirizzare come x[0], x[1], ecc. senza dover eseguire espressioni arbitrarie.


-1 per risposta № 3

Puoi questa espressione.

eval(""x"+str(i)+"="+"123"")