Найти - Пользователи
Полная версия: Переменная снаружи цикла. Помогите понять
Начало » Python для новичков » Переменная снаружи цикла. Помогите понять
1
aniashka99
Здравствуйте. Требуется цикл записать в виде одной строки: “1, 2, 3, ёлочка, гори!”.
Код:

tree='' #пустая переменная
for i in range(1,4):
tree=tree+str(i)+', ‘
print(tree+’ёлочка, гори!“)

Результат:
1, 2, 3, ёлочка, гори!

Код работает, дан изначально. Но я в упор не понимаю, почему введённая переменная не повторяется, а выводится только в начале строки. Это видно, если заменить переменную:

tree='пустота'
for i in range(1,4):
tree=tree+str(i)+', ‘
print(tree+’ёлочка, гори!”)

Результат:
пустота1, 2, 3, ёлочка, гори!

Почему переменная не повторяется в каждой итерации?

Пробовала ввести в цикл перед str(i) ещё одну переменную или просто строку - это фрагмент в результате повторяется, а изначальная переменная так и остается только в начале.

Если пытаюсь в цикле задать новую переменную (вместо “tree=tree+…”, задаю “forest=tree+…”), тогда вовсе из всего цикла в результате я получаю только последнюю цифру, переменную и запятую с пробелом: “пустота3, ёлочка, гори!”

Куда делись остальные итерации?

aniashka99
Извиняюсь за опечатки. Писала с телефона, при отправке не заметила.
py.user.next
aniashka99
Почему переменная не повторяется в каждой итерации?
Потому что внутри цикла у неё полностью заменяется всё её значение.
Там операция присваивания =.

Изначально там пустота. После этого пустота заменяется на новое значение пустота + цифра. И потом в этой переменной уже не пустота, а цифра. Так что при добавлении второй цифры она добавляется не к пустоте, а к первой цифре. И после этого у переменной снова заменяется значение, уже на две цифры. На третьем шаге цикла в переменной находится значение в виде двух цифр.

  
x = 1 # стало 1
x = x + 1 # стало 2
x = x + 1 # стало 3
x = x + 1 # стало 4
aniashka99
Извиняюсь снова за “опечатки”. В редакторе сообщения слова отображаются те, которые Я напечатала, а в отправленном сообщении уже какая-то белиберда.

Восторг!😄 Кажется, я действительно поняла Ваше объяснение))
А в варианте, если в цикле выполнять операцию применения с новой переменной:
forest=tree+str(i)+', '
Почему программа выводит только последнюю итерацию, если произведены все три, просто остались независимыми друг от друга? Просто потому что это последнее действие в цикле? А предыдущие просто обнуляются?
xam1816
[code python]код на форуме писать между этими тегами[/code]
py.user.next
aniashka99
А в варианте, если в цикле выполнять операцию применения с новой переменной:
  
forest=tree+str(i)+', '
Почему программа выводит только последнюю итерацию, если произведены все три, просто остались независимыми друг от друга? Просто потому что это последнее действие в цикле? А предыдущие просто обнуляются?
Потому что в переменную forest каждый раз сохраняется только текущее значение всех переменных. На последнем шаге цикла текущее значение всех переменных - пустота, цифра три.

x = 1 # стало 1
y = x + 1 # осталось 1, получилось 2
y = x + 2 # осталось 1, получилось 3
y = x + 3 # осталось 1, получилось 4

# x осталось 1
# y стало 4
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB