Возникнет TypeError при первой попытке txt[i] = ...: строки Python неизменяемы. До print выполнение не дойдёт. Для получения 'PYTHON' нужно создать новую строку через txt.upper().
Конвертация текста в заглавные буквы
Возникнет TypeError при первой попытке txt[i] = ...: строки Python неизменяемы. До print выполнение не дойдёт. Для получения 'PYTHON' нужно создать новую строку через txt.upper().
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В данном фрагменте кода строка 'python' преобразуется в верхний регистр. Какой результат будет напечатан? Варианты ответа:
- Python
- python
- PYTHON
- ошибка
txt = 'python'
for i in range(len(txt)):
txt[i] = txt[i].upper()
print(txt)
Ответ
Возникнет TypeError при первой попытке txt[i] = ...: строки Python неизменяемы. До print выполнение не дойдёт. Для получения 'PYTHON' нужно создать новую строку через txt.upper().
Корректный вариант:
txt = 'python'
txt = txt.upper()
print(txt) # PYTHON
upper не меняет исходный строковый объект, а возвращает результат преобразования. Присваивание связывает имя txt с новым значением. Если нужен посимвольный обход с последующим объединением, можно использовать ''.join(...), но для изменения регистра всей строки это лишняя работа.