Во-первых. Когда вы делаете print string1
, python пытается найти переменную string1
, но вы не указали эту переменную раньше. Для определения переменной в Python вам нужно написать что-то вроде этого:
string1 = <some value or expression>
Также есть еще способы определения переменных, но они находятся за пределами нашей проблемы.
Во-вторых. Когда вы определяете переменную внутри цикла, переменная доступна внутри этого цикла (локальная переменная) и будет уничтожена после выполнения цикла. Поэтому, если вы создаете переменную внутри своего цикла for, вы не можете вызывать переменную вне цикла.
Тем не менее. Для того, чтобы ваша идея действительно, вы могли бы использовать EXEC-заявление:
i = 1
exec "string" + str(i) + " = " + str(i)
i = 2
exec "string" + str(i) + " = " + str(i)
print string1
print string2
Результат ехес-заявление будет понятно, интерпретатор Python как типичный питона линии и будет выполняться. Фактически, exec-statements опасны и могут быть источниками многих ошибок и уязвимостей. Я бы не рекомендовал вам слишком часто использовать это.
Никакие динамические имена не поддерживаются Python. Думаю, вам нужен массив здесь? – SMA
Назначение строки '' string1 "' переменной с именем 'string'.Это все, что происходит здесь. Обратите внимание, что 'range (1,2)' также просто '[1]'. Вы составляете конструкции на языке, который не существует, и спрашиваете, почему он не работает. –
Можете ли вы объяснить на английском языке, почему вы пытаетесь это сделать? Вероятно, вам лучше использовать массив или словарь для хранения ваших строк, а не динамически названных переменных. –