Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2024 09:33:48

aniashka99
Зарегистрирован: 2024-11-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная снаружи цикла. Помогите понять

Здравствуйте. Требуется цикл записать в виде одной строки: “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, ёлочка, гори!”

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

Офлайн

#2 Ноя. 9, 2024 09:35:56

aniashka99
Зарегистрирован: 2024-11-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная снаружи цикла. Помогите понять

Извиняюсь за опечатки. Писала с телефона, при отправке не заметила.

Офлайн

#3 Ноя. 9, 2024 10:34:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Переменная снаружи цикла. Помогите понять

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

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

  
x = 1 # стало 1
x = x + 1 # стало 2
x = x + 1 # стало 3
x = x + 1 # стало 4



Отредактировано py.user.next (Ноя. 9, 2024 10:39:29)

Офлайн

#4 Ноя. 9, 2024 23:22:14

aniashka99
Зарегистрирован: 2024-11-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Переменная снаружи цикла. Помогите понять

Извиняюсь снова за “опечатки”. В редакторе сообщения слова отображаются те, которые Я напечатала, а в отправленном сообщении уже какая-то белиберда.

Восторг!😄 Кажется, я действительно поняла Ваше объяснение))
А в варианте, если в цикле выполнять операцию применения с новой переменной:
forest=tree+str(i)+', '
Почему программа выводит только последнюю итерацию, если произведены все три, просто остались независимыми друг от друга? Просто потому что это последнее действие в цикле? А предыдущие просто обнуляются?

Отредактировано aniashka99 (Ноя. 9, 2024 23:28:33)

Офлайн

#5 Ноя. 9, 2024 23:45:48

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Переменная снаружи цикла. Помогите понять

[code python]код на форуме писать между этими тегами[/code]

Офлайн

#6 Ноя. 10, 2024 01:10:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9843
Репутация: +  853  -
Профиль   Отправить e-mail  

Переменная снаружи цикла. Помогите понять

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version