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 № 1Per 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"")