Chcę przypisać:
x0="123"
x1="123"
x2="123"
x3="123"
x4="123"
x5="123"
x6="123"
x7="123"
x8="123"
x9="123"
Piszę kod, aby wyrazić, że mogę uzyskać wynik ciągu znaków 123
po wprowadzeniu x1
lub 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
Jak mogę to zrobić?
Odpowiedzi:
7 dla odpowiedzi № 1Do dynamicznego wykonywania instrukcji użyj exec
komunikat.
>>> exec("y=3")
>>> y
3
Eval Usgae:eval(expression)
The expression
Argument jest analizowany i interpretowany jako wyrażenie w języku Python
na przykład:
>>> s=3
>>> eval("s==3")
True
>>> eval("s + 1")
4
>>> eval("s")
3
>>> eval("str(s)+"test"")
"3test"
12 dla odpowiedzi nr 2
eval()
dopuszcza tylko wyrażenia. Przypisanie nie jest wyrażeniem, lecz oświadczeniem; będziesz musiał użyć exec
zamiast.
Nawet wtedy możesz użyć globals()
słownik, aby dodać nazwy do globalnej przestrzeni nazw i nie musisz używać żadnego arbitralnego wykonania wyrażenia.
ty naprawdę Nie chcę tego robić, musisz przechowuj dane poza swoimi nazwami zmiennych i zamiast tego użyj listy lub słownika:
x = ["123"] * 10
da ci listę, na którą możesz adresować x[0]
, x[1]
itp. bez konieczności wykonywania dowolnych wyrażeń.
-1 dla odpowiedzi nr 3
Możesz to powiedzieć.
eval(""x"+str(i)+"="+"123"")