Перейти к содержанию

Тип str — строки и срезы

Тип str — работа со строками

В этом уроке мы познакомимся со строками и работой с текстом. Работа со строками является самой большой частью программирования. Даже если вы пишете сложную алгоритмическую задачу, то даже тогда понадобится вывести текст на экран. К счастью, строки в Python сделаны очень приятно и компактно, но при этом не теряют в возможностях.

Способы определения строковой переменной

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

>>> line = "Это строка"
>>> line
'Это строка'
>>> new_string = 'Строка с "двойными" кавычками'
>>> new_string
'Строка с "двойными" кавычками'
>>> char = "C"
>>> char
'C'
>>> multiline_str = """Если надо написать текст
... который не умещается в одну строку."""
>>> multiline_str
'Если надо написать текст\nкоторый не умещается в одну строку.'
>>> print(multiline_str)
Если надо написать текст
который не умещается в одну строку.
>>>
>>> text = ('Возьмите строки в скобки, и тогда '
...         'они объединятся в одну большую строку.')
>>> text
'Возьмите строки в скобки, и тогда они объединятся в одну большую строку.'
>>> print(text)
Возьмите строки в скобки, и тогда они объединятся в одну большую строку.
>>>
>>> unicode = "\u00dcnic\u00f6de"
>>> print(unicode)
Ünicöde
>>> raw_str = r"raw \n string"
>>> raw_str
'raw \\n string'
>>> print(raw_str)
raw \n string

Теперь убедимся, что все способы дали там тип str:

>>> type(line), type(new_string), type(char), type(multiline_str), type(text), type(unicode), type(raw_str)
(<class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>)

Обратите внимание, что при выводе значения переменной multiline_str появился странный знак \n. О нем мы поговорим немного позже.

Правильные кавычки

Обратите внимание, что пунктуационных знаков, обозначающих кавычки очень много. И скорее всего вы столкнетесь с тем, что когда-то вам попадется текст, где стандартные символы одинарной или двойной кавычки заменят на лапки или что-то другое. Например, вот этот кусочек кода содержит неправильные символы кавычек, хотя они и очень похожи print(“Hello, world!“). И сообщение об ошибке не всегда могут корректно подсказать в чем проблема

>>> print(Hello, world!“)
  File "<stdin>", line 1
    print(Hello, world!“)
               ^
SyntaxError: invalid character in identifier

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

>>> print("Hello, world!")
Hello, world!

Мы уже однажды проверяли числовой код символа, давайте это сделаем и в этот раз:

>>> ord('“')
8220
>>> ord('"')
34

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

С числами и логическими типами мы первым делом изучали операторы. Сделаем то же самое и со строками.

Операторов для работы со строками всего два.

Операция Название и значение Пример
x + y Объединение в одну строку 'a'+'b' = 'ab'
x * y Повторить строку x y раз 'a'*3 = 'aaa'

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

>>> year = 1977
>>> title = "Star Wars"
>>> "Фильм " + title + " вышел в " + str(year) + " году"
'Фильм Star Wars вышел в 1977 году'

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

>>> "Фильм" + title + "вышел в" + str(year) + "году"
'ФильмStar Warsвышел в1977году'

Ввод строк пользователем

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

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

>>> name = input('Введите ваше имя: ')
Введите ваше имя: Михаил
>>> name
'Михаил'

Когда функция выполняется, то Python выводит на экран приглашение и ждет. После того как пользователь введет текст, и нажмет клавишу ввода она возвращает строку (str).

Для того чтобы спросить "на какой планете от Солнца живет человек" в виде числа уже понадобится более сложная конструкция. Сначала можно получить текст, а потом попытаться конвертировать его в число:

>>> number_str = input("Какой номер вашей планеты от Солнца: ")
Какой номер вашей планеты от Солнца: 3
>>> int(number_str)
3

Результат выполнения функции можно передать на вход в другую функцию. Поэтому мы можем немного упростить запись:

>>> moons = int(input("Сколько лун у вашей планеты: "))
Сколько лун у вашей планеты: 1
>>> moons
1

Создание стороковых объектов

Это короткий урок для закрепления навыков создания строк. Вам необходимо:

  • создать простой строковый объект с именем simply_str_object, используя одинарные или двойные кавычки
  • создать немного более сложный строковый с какими-либо кавычками внутри, назвав его more_complex_str_object
  • создать строковый объект с именем multi_str_object, который будет содержать несколько строк

Обращаю ваше внимание - что каждый из пунктов задания может быть выполнен разными методами. В последнем задании используйте метод, который НЕ использует тройные кавычки, но позволяет записать строковый объект, который содержит несколько строк.

Загрузка тренажера...

Проверка вашего решения стартует после нажания Вами кнопки Run. Если что-то не так - не переживайте. Для возвращения к исходному заданию обновите страничку вашего браузера.

image image

Проверка

Загрузка викторины...