Модификация строки внутри цикла

Будет напечатано python. upper() возвращает новую строку, но результат каждого вызова здесь игнорируется; исходная строка txt не меняется и ошибки присваивания нет.

Короткий ответ

Что ответить на собеседовании

Будет напечатано python. upper() возвращает новую строку, но результат каждого вызова здесь игнорируется; исходная строка txt не меняется и ошибки присваивания нет.

Подробный разбор

Ответ с пояснениями

Условие

В приведённом фрагменте Python‑кода пытаются изменить символы строки 'python' в ходе итераций. Какой результат будет напечатан? Варианты ответов:

  • ошибка
  • Python
  • PYTHON
  • python
txt = 'python'
for i in range(len(txt)):
    txt[i].upper()
print(txt)

Ответ

Будет напечатано python. upper() возвращает новую строку, но результат каждого вызова здесь игнорируется; исходная строка txt не меняется и ошибки присваивания нет.

В отличие от txt[i] = ..., этот код ничего не пытается записать в неизменяемую строку. На каждой итерации создаётся результат преобразования отдельного символа, который сразу теряется.

Чтобы изменить значение переменной, нужно сохранить результат:

txt = 'python'
txt = txt.upper()
print(txt)  # PYTHON

Цикл для этой задачи не нужен. Важно различать изменение существующего объекта и присваивание имени ссылки на новое строковое значение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее