Бесплатный курс по python. Зарегистрируйтесь для отслеживания прогресса →

Python: Неизменяемость

Что напечатает на экран последний вызов?

name = 'Tirion'
print(name.upper())  # => TIRION
print(name)  # => ?

Ответ на этот вопрос зависит от того, как вы поняли урок про неизменяемость примитивных типов данных. Вызов метода .upper() возвращает новое значение, в котором все буквы преобразованы в верхний регистр, но он не меняет (и не может этого сделать) исходную строку. Поэтому внутри переменной окажется старое значение: 'Tirion'. Эта логика справедлива для методов всех примитивных типов.

Более того, попытка изменить значение атрибутов этих данных приведёт к ошибке:

num = (1+3j)
num.real = 5
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# AttributeError: readonly attribute

Вместо изменения значения можно заменить значение. Для этого понадобятся переменные:

name = 'Tirion'
name = name.upper()
print(name)  # => TIRION

Задание

Данные, вводимые пользователями, часто содержат лишние пробельные символы в конце или начале строки. Обычно их вырезают с помощью метода .strip(), например, было: ' hello\n ', стало: 'hello'.
Обновите переменную first_name, записав в неё то же самое значение, но обработанное методом .strip(). Распечатайте то, что получилось, на экран.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе