python
July 13

Строки и операции над ними

Строки и операции над ними

Вот и пришло время познакомиться со строковым типом данных. Это один из самых часто встречающихся типов данных. Он используется для хранения символьной информации: букв, чисел, знаков препинания и прочих символов.

В этой статье мы разберемся с тем, что из себя представляет этот тип данных, как с ним работать и познакомимся с понятием индексов и срезов.

Что такое строки и какие их виды существуют

Строковый тип данных — это последовательности символов Unicode любой длины, заключённые в одинарные, двойные или тройные кавычки. Символами могут быть буквы, числа, знаки препинания, специальные символы и много подобного.

Главное условие строк - это необходимость в том, чтобы с двух сторон их окружали одинаковые кавычки.

В Python строки обозначаются, как str (сокращение от английского слова string - строка).

Виды строк:

  1. Однострочные строки - это строки, которые записываются в одну строку и окружаются с двух сторон одинарными или двойными кавычками.
Hello, world!
Hello, world!

Как видно из примеров, выбор типа кавычек (одинарных или двойных) не влияет на вывод строки.

Зачем же нужны два вида кавычек? Основная причина заключается в том, что вы можете создавать строки, содержащие кавычки. Например, внутри одинарных кавычек можно использовать двойные и наоборот:

Когда мы попытаемся выполнить нашу программу, всё отработает корректно:

Приезжаю завтра, остановлюсь в гостинице "Москва"
It's not an apostrophe — it's a catastrophe!

Если же выбрать неправильные кавычки, это приведет к ошибке синтаксиса:

  File "c:\Users\Python\tuition\test.py", line 2
    example2 = 'It's not an apostrophe — it's a catastrophe!'
                                       ^
SyntaxError: invalid character '—' (U+2014)
  1. Многострочные строки - они отличаются от обычных тем, что позволяют нам писать текст на нескольких строках сразу. Для обрамления таких строк используются три одинарные или три двойные кавычки. Какие конкретно кавычки вы будете при этом использовать не будет играть вообще никакой роли.
Идем сегодня мы пораньше,
Чтобы не 'быть' опаздунами.
Мы так намерены и "дальше",
Чтоб было счастье между нами.

Как видно из примера, текст действительно находится на разных строках, и более того - внутри мы использовали кавычки и это не вызвало у нас никаких ошибок!

Отлично, с этим разобрались! Давайте перейдём к следующему пункту.

Операции над строками

В Python вы можете выполнять арифметические операции не только с числами, но и со строками. Рассмотрим две основные операции: сложение (конкатенация) и умножение (повторение).

Сложение (конкатенация)

В Python мы действительно можем складывать строки и эта операция называется - конкатенацией.

HelloWorld!

Как видно из примера, две строки "Hello" и "World!" были объединены в одну строку "HelloWorld!". Однако этот результат может показаться недостаточно читаемым из-за отсутствия пробела между словами.

Давайте добавим пробел между строками:

Hello World!

Теперь результат выглядит более естественно и читаемо. Помните, что при конкатенации строк они соединяются в том порядке, в котором вы их передаёте.

Повторение строк

Теперь, когда мы разобрались с операцией сложения, перейдём к умножению! Мы будем называть эту операцию повторением или дублированием строк, и вот почему:

HelloHelloHelloHelloHello

При выполнении операции умножения строка повторяется указанное количество раз. В данном случае строка «Hello» умножается на 5, что приводит к её повторению пять раз

Важный момент! Строку можно умножать на число, но нельзя умножать строку на строку — это приведёт к ошибке!

Индексы и срезы

Сейчас поговорим, о важной теме, которая будет очень часто применяться в будущем - индексы и срезы.

Индексы

Мы уже говорили, что строки - это упорядоченные наборы символов (последовательности).

Давайте создадим переменную строкового типа:

и подробнее рассмотрим как она устроена:

Смотрите, каждый символ строки имеет свой уникальный, порядковый номер. Эти номера называются индексами. Первый – 0, второй – 1 и так до конца. Мы можем использовать эти индексы для обращения к отдельному символу строки. Для этого, записывается имя переменной и в квадратных скобках указывается номер символа:

H
l

Однако вам стоит быть внимательнее, если при обращении вы укажите не существующий индекс, то это приведёт к возникновению ошибки!

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

Так, к первому элементу нашей строки мы можем обратиться несколькими способами:

example[0]
#или
example[-13]

Не отходя от кассы, расскажу вам про одну полезную функцию, которая может вам пригодиться:
len() - это функция, возвращающая длину строки, которую мы передаём в качестве параметра.

13
17
5
1
0

Срезы

Отлично, теперь мы знаем, что такое индексы и как обращаться, к отдельным элементам строки. Но что, если нам нужно выбрать не один символ из строки, а несколько? Для этого нам и понадобятся срезы!

Фактически, когда мы выполняем индексацию, то возвращается новая строка из одного выделенного символа. Но мы можем выделять и сразу несколько символов, используя следующий синтаксис:

строка(start:stop:step)

где,

  • start - индекс, с которого мы начнём выбирать символы из строки.
  • stop - индекс (не включительно), на котором у нас закончится выбор.
  • step - шаг выбора символов (каждый, через один, через два и т.д)

Выделенная последовательность символов называется срезом строки.

Посмотрим на примере:

1234
0123456789
01234
02468

Разберемся:

  • В первом выводе, мы выбрали все символы, индексы которых начинаются с 1 и заканчиваются 4. Конкретное значение параметра stop - не учитывается, при срезе. По этой причине мы не взяли символ с индексом 5.
  • Во втором выводе, мы вообще не указывали параметры для среза, что привело к выводу всей строки. Это аналогичная форма записи вывода print(example)
  • В третьем выводе мы не указали начальный параметр start, но указали конечный - stop. Следовательно символы вывелись с начала строки и до указанного (не включительно).
  • В четвёртом выводе, мы не указывали параметры start и stop, но указали параметр step = 2 - это привело к тому, что мы выбрали из строки все символы с чётными индексами.

Изменение строк

При работе со строками в Python следует помнить, что строки являются неизменяемыми объектами. Это означает, что вы не можете изменить существующую строку напрямую.

Например, попытка изменить первый символ строки таким образом:

example[0] = 'h'

вызовет ошибку.

Для изменения строки необходимо создать новую строку с желаемым содержимым. Например, чтобы заменить первый символ строки s на 'h', можно использовать следующий код:

example = 'h' + s[1:]

Этот подход применяется всякий раз, когда требуется внести изменения в существующую строку.

Примечание. Если вам не понятно, почему строки ведут себя именно таким образом. Вам следует прочитать нашу статью - "Изменяемые и неизменяемые типы данных".

Что необходимо запомнить из этой статьи:

  1. Строка – упорядоченный набор символов (последовательность);
  2. Как работает сложение строк (конкатенация) и умножение строк (повторение);
  3. У каждого символа в строке, есть свой порядковый номер - называемый индексом;
  4. Индексация строк начинается с 0, но если вы читаете строку в обратном порядке, то с -1;
  5. Мы можем обращаться к конкретному символу строки, при помощи её индекса - example[0]. В тоже время, мы можем выбрать сразу несколько символов, используя срезы - example[1:5:2].

Ещё больше статьей для начинающих и не только, вы можете прочитать в нашем телеграмм канале Python Jungle.