aniashka99
Ноя. 9, 2024 09:33:48
Здравствуйте. Требуется цикл записать в виде одной строки: “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
Ноя. 9, 2024 09:35:56
Извиняюсь за опечатки. Писала с телефона, при отправке не заметила.
py.user.next
Ноя. 9, 2024 10:34:20
aniashka99
Почему переменная не повторяется в каждой итерации?
Потому что внутри цикла у неё полностью заменяется всё её значение.
Там операция присваивания =.
Изначально там пустота. После этого пустота заменяется на новое значение пустота + цифра. И потом в этой переменной уже не пустота, а цифра. Так что при добавлении второй цифры она добавляется не к пустоте, а к первой цифре. И после этого у переменной снова заменяется значение, уже на две цифры. На третьем шаге цикла в переменной находится значение в виде двух цифр.
x = 1 # стало 1
x = x + 1 # стало 2
x = x + 1 # стало 3
x = x + 1 # стало 4
aniashka99
Ноя. 9, 2024 23:22:14
Извиняюсь снова за “опечатки”. В редакторе сообщения слова отображаются те, которые Я напечатала, а в отправленном сообщении уже какая-то белиберда.
Восторг!😄 Кажется, я действительно поняла Ваше объяснение))
А в варианте, если в цикле выполнять операцию применения с новой переменной:
forest=tree+str(i)+', '
Почему программа выводит только последнюю итерацию, если произведены все три, просто остались независимыми друг от друга? Просто потому что это последнее действие в цикле? А предыдущие просто обнуляются?
py.user.next
Ноя. 10, 2024 01:10:08
aniashka99
А в варианте, если в цикле выполнять операцию применения с новой переменной:
Почему программа выводит только последнюю итерацию, если произведены все три, просто остались независимыми друг от друга? Просто потому что это последнее действие в цикле? А предыдущие просто обнуляются?
Потому что в переменную forest каждый раз сохраняется только текущее значение всех переменных. На последнем шаге цикла текущее значение всех переменных - пустота, цифра три.
x = 1 # стало 1
y = x + 1 # осталось 1, получилось 2
y = x + 2 # осталось 1, получилось 3
y = x + 3 # осталось 1, получилось 4
# x осталось 1
# y стало 4