Присваивание a[5] = 'b' вызовет TypeError, поскольку строки неизменяемы. Значение a останется 'Hello world!', если исключение будет перехвачено; без обработки выполнение остановится.
Изменение символа в строке по заданному индексу
Присваивание a[5] = 'b' вызовет TypeError, поскольку строки неизменяемы. Значение a останется 'Hello world!', если исключение будет перехвачено; без обработки выполнение остановится.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Рассмотрите, что происходит, когда пытаются изменить символ строки, используя индексацию. Нужно объяснить, как изменится (или не изменится) переменная после такой операции.
a = "Hello world!"
a[5] = "b"
# чему станет a?
Ответ
Присваивание a[5] = 'b' вызовет TypeError, поскольку строки неизменяемы. Значение a останется 'Hello world!', если исключение будет перехвачено; без обработки выполнение остановится.
Создать изменённую строку можно так:
a = 'Hello world!'
a = a[:5] + 'b' + a[6:]
print(a) # Hellobworld!
Индекс 5 обозначает пробел между словами. Срезы и конкатенация создают новое значение, после чего имя a перепривязывается к нему. Для большого числа замен можно использовать промежуточный список символов и один join в конце, но это уже другая стратегия редактирования.