Оператор * можно использовать для того, чтобы размножить строку. Попробуйте
ввести в интерактивный интерпретатор следующие строки и посмотреть, что полу-
чится:
>>> start = 'Na ' * 4 + '\n'
>>> middle = 'Hey ' * 3 + '\n'
>>> end = 'Goodbye.'
>>> print(start + start + middle + end)
Извлекаем символ с помощью символов [ ]
Для того чтобы получить один символ строки, задайте смещение внутри квадрат-
ных скобок после имени строки. Смещение первого (крайнего слева) символа
равно 0, следующего — 1 и т. д. Смещение последнего (крайнего справа) символа
может быть выражено как –1, поэтому вам не придется считать, в таком случае
смещение последующих символов будет равно –2, –3 и т. д.:
>>> letters = 'abcdefghijklmnopqrstuvwxyz'
>>> letters[0]
'a'
>>> letters[1]
'b'
>>> letters[-1]
'z'
62
Глава 2. Ингредиенты Python: числа, строки и переменные
>>> letters[-2]
'y'
>>> letters[25]
'z'
>>> letters[5]
'f'
Если вы укажете смещение, равное длине строки или больше (помните, смеще-
ния лежат в диапазоне от 0 до длины строки –1), сгенерируется исключение:
>>> letters[100]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
Индексирование работает и для других типов последовательностей (списков
и кортежей), которые мы рассмотрим в главе 3.
Поскольку строки неизменяемы, вы не можете вставить символ непосредствен-
но в строку или изменить символ по заданному индексу. Попробуем изменить
слово Henny на слово Penny и посмотрим, что произойдет:
>>> name = 'Henny'
>>> name[0] = 'P'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Вместо этого вам придется использовать комбинацию строковых функций вроде
replace() или slice (ее вы увидите совсем скоро):
>>> name = 'Henny'
>>> name.replace('H', 'P')
'Penny'