DamiRocK

Python: неизменяемая строка, новое значение и сохранение результата strip()

Объединяем два урока о неизменяемости: собираем слово из символов и очищаем имя от краевых пробелов. Отличаем изменение объекта от нового присваивания.

Что нельзя изменить

Строка Python неизменяема. Присваивание name[0] = "B" недопустимо, даже если name существует. Можно создать другую строку и связать с ней то же имя: name = "B" + name[1:]. В этом случае меняется связь переменной, а не содержимое исходной строки.

Два исходных урока об одном свойстве объединены здесь с сохранением обоих упражнений.

Первое упражнение: собрать слово

Из имён Spencer, Kristina и Martina возьмите второй символ первой строки, третий третьей, затем третий, седьмой и пятый второй строки:

one = "Spencer"
two = "Kristina"
three = "Martina"
print(f"{one[1]}{three[2]}{two[2]}{two[6]}{two[4]}")

Результат — print. Строки one, two и three не изменились: индексирование и форматирование создали новое значение.

Второе упражнение: очистить имя

first_name = "  Grigor   \n"
first_name = first_name.strip()
print(first_name)

Будет напечатано Grigor. Метод без аргументов удаляет краевые пробельные символы, включая перевод строки, но не убирает пробелы внутри имени.

Почему один вызов недостаточен

Если написать только first_name.strip(), результат вычислится, но имя first_name останется связанным с прежней строкой. Его нужно использовать: сохранить, передать другой функции или сразу вывести.

Не все методы любого объекта возвращают строку и не все объекты неизменяемы. Здесь обсуждаются именно преобразования строк strip(), upper() и аналогичные операции. Метод count(), например, возвращает число. Поведение следует определять по конкретному методу, а не только по синтаксису точки.

Hexlet / Code Basics и участники · Неизменяемость значений, Результаты методов · GNU AGPL v3. Два урока объединены; упражнения сохранены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.