Повторение материала
Строки в Python используются, когда надо работать с текстовыми данными.
Создание строки. Для создания строк мы используем парные кавычки ''
или ""
:
s1 = 'Python'
s2 = "Pascal"
Считывание строки. Для считывания текстовых данных в строковую переменную мы используем функцию input()
:
s = input()
num = int(input())
Пустая строка. Для создания пустой строки мы пишем s = ''
или s = ""
. Пустая строка – это аналог числа 0
.
Длина строки. Для определения длины строки (количества символов) мы используем встроенную функцию len()
:
s = 'Hello'
n = len(s)
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
Ошибка возникает, поскольку строка содержит всего символов.
Обратите внимание: если длина строки 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
последовательно перебирает все значения от до . Это означает, что выражение s[i]
последовательно вернет все символы строки s
. Такой способ итерации строки удобен, когда нам нужен не только сам элемент s[i]
, но и его индекс i
.
Если нам не нужен индекс самого символа, то мы можем использовать более короткий способ итерации:
s = 'abcdef'
for c in s:
print(c)
Этот цикл пройдет по строке s
, придавая переменной цикла c
значение каждого символа (!) в отличие от предыдущего цикла, в котором переменная цикла «бегала» по индексам строки.
Обратите внимание на обозначение переменных цикла. В первом цикле мы используем имя i
, что соответствует стандартной идеологии наименования переменных цикла. Во втором цикле, мы назвали переменную буквой c
– первая буква слова char (символ).