Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2011-kl-lab2.doc
Скачиваний:
5
Добавлен:
12.11.2019
Размер:
821.76 Кб
Скачать

2.1. Прості операції над стрічками

Взагалі кажучи, над стрічками не можна проводити ті ж операції, що і над числами, тому наступні приклади працювати не будуть:

message-1 "Hello"/123 "Hello"*"world!" "15"+2

Але оператор «+» працює з стрічками, хоча позначає іншу операцію: конкатенацію або зчеплення рядків.

>>> str1 = "Hello"

>>> str2 = " world"

>>> print str1 + str2 + "!"

Hello world!

Зверніть увагу, що друга стрічка починається з пропуску. Пропуск такий же символ як і будь-який інший.

Оператор * теж можна використовувати по відношенню до стрічок, але за умови, що одним з операндів буде ціле число. В цьому випадку оператор * символізує операцію повторення стрічки (або ітерацію). Наприклад, 'Fun'*3 видасть результат 'FunFunFun'. Можна прослідкувати аналогію між операціями над числами і операціями над стрічками: так само, як 4*3 еквівалентно 4+4+4, 'Fun'*3 еквівалентно 'Fun'+'Fun'+'Fun'.

Але з іншого боку, конкатенація і повторення мають кілька істотних відмінностей від складання і множення.

  • Вправа. Який результат буде отримано після виконання виразу "hello"+" world"*3? Які висновки можна зробити на основі цього результату?

2.2. Оператор індексування

Ми вже навчилися виконувати деякі операції над стрічками, але до цього моменту ми працювали зі стрічкою як з єдиним цілим. Відомі нам операції над стрічками (конкатенація і ітерація) є, по суті аналогами складання і множення чисел, але цей набір неповний – не вистачає аналогів операцій віднімання і ділення.

В програмуванні існує цілий набір спеціальних операцій і функцій, символів, що дозволяють працювати з наборами, які складають стрічку – підстрічку.

Простий з них – оператор індексування. Даний оператор дозволяє отримати будь-який одиночний символ зі стрічки. У нього досить простій синтаксис:

РЯДОК[ІНДЕКС]

Індекс, що указується в квадратних дужках, є порядковим номером символу в стрічці:

>>> 'Hello!'[1]

'e'

Інтерпретатор чомусь повернув не перший, а другий символ стрічки. Пояснюється ця семантична помилка дуже просто. Річ у тому, що комп'ютер починає відлік не з одиниці, а з нуля. Перевіримо:

>>> 'Hello!'[0]

'H'

2.3. Довжина стрічки і від’ємні індекси

Для зручної роботи з оператором індексування добре б було знати довжину стрічки. Втім, з'ясувати це можна за допомогою вбудованої функції len().

>>> len('Hello world!')

12

>>>

Зверніть увагу, що пропуск теж враховується як символ. Визначати можна також і довжину змінної:

>>> a='Hello!'

>>> len(a)

6

Тепер давайте спробуємо вивести останній символ стрічки:

>>> а = 'Hello!'

>>> а[len(a)]

Traceback (most recent call last):

File "<pyshell#16>", line 1, in -toplevela[

len(a)]

IndexError: string index out of range

>>>

Оскільки нумерація символів в стрічках починається з нуля, ми використали неприпустиме значення індексу – символу з таким індексом в цій стрічці немає, тому інтерпретатор згенерував виключення IndexError: string index out of range. Виправимо помилку скориставшись композицією: як індекс можна використати будь-який вираз, що повертає ціле число.

>>> а = 'Hello!'

>>> а[len(a)-1]

'!'

Використання функції len() в операторі індексування виглядає громіздко, тому передбачено коротший варіант запису:

>>> а[-1]

'!'

Ще один маленький експеримент. Спробуємо підставити як індекс інше від’ємне число:

>>> а[-5]

'e'

Таким чином, ми можемо індексувати стрічку з обох її кінців – це дуже зручно. До речі, така можливість є в дуже небагатьох мовах програмування. А зараз невелика вправа для закріплення матеріалу.

  • Вправа. Напишіть програму, яка виводить довжину введеної користувачем стрічки, а також перший, п'ятий і останній символ. Не забудьте передбачити випадок, коли довжина стрічки складає менше за п'ять символів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]