Строковые типы данных
0.0/5 оценка (0 голосов)

Строковые типы данных

Строковый тип данных. Операции над строками, работа с отдельными символами, а также перебор (итерирование) символов строк.

Строковый тип данных

 

Аннотация. Строковый тип данных. Вспомним основные операции над строками, научимся работать с отдельными символами, а также перебирать (итерировать) символы строк.

Повторение материала

Строки в Python используются когда надо работать с текстовыми данными.

Создание строки. Для создания строк, мы используем парные кавычки '' или "":

s1 = 'Python'
s2 = "Pascal"

Считывание строки. Для считывания текстовых данных в строковую переменную, мы используем функцию input():

s = input()  # считали текст
num = int(input())  # считали текст и преобразовали его в целое число

Пустая строка. Для создания пустой строки, мы пишем s = '' или s = "". Пустая строка – это аналог числа 0.

Длина строки. Для определения длины строки (количества символов), мы используем встроенную функцию len():

s = 'Hello'
n = len(s)  # значение переменной равно 5
print(n)

Конкатенация и умножение на число. Операторы + и * можно использовать для строк. Оператор + сцепляет две и более строк. Это называется конкатенацией строк. Оператор * повторяет строку указанное количество раз. 

Выражение Результат
'AB' + 'cd' 'ABcd'
'A' + '7' + 'B' 'A7B'
'Hi'* 4 'HiHiHiHi'

Оператор принадлежности in. С помощью оператора in, мы можем проверять, находится ли одна строка в составе другой. То есть, является ли одна строка подстрокой другой:

 s = 'All you need is love'
if 'love' in s:
    print('❤️')
else:
    print('💔')

Так как строка s содержит подстроку 'love', то будет выведен смайлик ❤️.

   В Python можно использовать смайлики emoji👍

Индексация строк

Очень часто бывает необходимо обратиться к конкретному символу в строке. Для этого в Python используются квадратные скобки [], в которых указывается индекс (номер) нужного символа в строке.

Пусть s = 'Python'. Таблица ниже, показывает как работает индексация:

Выражение Результат Пояснение
s[0] P первый символ строки
s[1] y второй символ строки
s[2] t третий символ строки
s[3] h четвертый символ строки
s[4] o пятый символ строки
s[5] n шестой символ строки

Обратите внимание первый символ строки равен s[0], а не s[1]. В Python индексация начинается с 0, по аналогии с функцией range(n), которая генерировала последовательность натуральных чисел от 0 до n - 1.

В отличие от многих языков программирования, в Python есть возможность работы с отрицательными индексами. Если первый символ строки имеет индекс 0, то последнему элементу присваивается индекс -1.

Выражение Результат Пояснение
s[-6] P первый символ строки
s[-5] y второй символ строки
s[-4] t третий символ строки
s[-3] h четвертый символ строки
s[-2] o пятый символ строки
s[-1] n шестой символ строки

Таким образом, получаем

Положительные индексы 0 1 2 3 4 5
Строка P y t h o n
Отрицательные индексы -6 -5 -4 -3 -2 -1

Частая ошибка у начинающих программистов — обращение по несуществующему индексу в строке.

Например, если s = 'Python', и мы попытаемся обратится к s[17], то мы получим ошибку:

IndexError: string index out of range

Ошибка возникает, поскольку строка содержит всего 6 символов.

Обратите внимание: если длина строки s равна len(s), то при положительной нумерации слева направо, последний элемент имеет индекс равный len(s) - 1, а при отрицательной индексации справа налево, первый элемент имеет индекс равный -len(s).

Итерирование строк

Очень часто нужно просканировать всю строку целиком, обрабатывая каждый ее символ. Для этого удобно использовать цикл for. Напишем программу, которая выводит каждый символ строки на отдельной строке:

s = 'abcdef'
for i in range(len(s)):
    print(s[i])

Результатом выполнения такой программы будут строки:

a
b
c
d
e
f

Мы передаем в функцию range() длину строки len(s). В нашем случае длина строки s, равна 6. Таким образом, вызов функции range(len(s)) имеет вид range(6) и переменная цикла i последовательно перебирает все значения от 0 до 5. Это означает, что выражение s[i] последовательно вернет все символы строки s. Такой способ итерации строки удобен, когда нам нужен не только сам элемент s[i], но и его индекс i.

Если нам не нужен индекс самого символа, то мы можем использовать более короткий способ итерации:

s = 'abcdef'
for c in s:
    print(c)

Этот цикл пройдет по строке s, придавая переменной цикла c значение каждого символа (!) в отличие от предыдущего цикла, в котором переменная цикла «бегала» по индексам строки.

Обратите внимание на обозначение переменных цикла. В первом цикле мы используем имя i, что соответствует стандартной идеологии наименования переменных цикла. Во втором цикле, мы назвали переменную буквой c – первая буква слова char (символ).