Урок курса
Строки: создание и базовые операции
Python для новичковВ предыдущем уроке мы работали с числами: складывали, умножали, делили. Числа — это один тип данных. Сейчас переходим к другому — к строкам. Строки хранят текст, и у них есть свои операции, которые внешне похожи на арифметику, но работают иначе.
Строковый литерал: создание строк в кавычках
Строка в Python — это последовательность символов. Чтобы записать строку прямо в коде, её берут в кавычки. Такая запись называется строковым литералом.
Кавычки бывают одинарными или двойными — Python принимает оба варианта, и результат одинаковый:
greeting = 'Привет'
name = "Мария"
Оба выражения создают значение типа str. Сами кавычки в строку не входят: greeting хранит ровно шесть символов — П, р, и, в, е, т.
Выбор между одинарными и двойными кавычками обычно диктует удобство. Если внутри строки нужен апостроф, проще использовать двойные кавычки снаружи:
note = "It's fine"
Иначе пришлось бы экранировать символ — но это уже тонкости, которые не понадобятся прямо сейчас.
Строку можно присвоить переменной точно так же, как число:
city = 'Москва'
print(city) # Москва
Python выведет содержимое строки без кавычек — именно так, как вы её написали.
Конкатенация и повторение строк: операторы + и *
Оператор + уже знаком вам по арифметике — но со строками он работает иначе. Вместо сложения чисел он соединяет две строки в одну новую:
first = 'При'
second = 'вет'
greeting = first + second
print(greeting) # Привет
Python берёт символы первой строки, приписывает к ним символы второй и возвращает результат. Исходные строки не меняются — создаётся именно новая строка.
Можно соединять не только переменные, но и литералы напрямую:
full_name = 'Анна' + ' ' + 'Иванова'
print(full_name) # Анна Иванова
Пробел здесь — отдельный строковый литерал ' '. Без него строки склеятся вплотную.
Оператор * тоже знаком по числам, но со строками он означает повторение. Нужно указать строку и целое число — в любом порядке:
line = '-' * 20
print(line) # --------------------
echo = 3 * 'ха'
print(echo) # хахаха
Это удобно, когда нужно нарисовать разделитель или сформировать строку из повторяющегося фрагмента — не приходится копировать символы вручную.
Важно понимать, что оба оператора работают только со строками. Нельзя написать 'Счёт: ' + 5 — Python не умеет сам решить, как смешать строку и число. Но об этом подробнее в следующей секции.
Длина строки: функция len()
Когда строка уже создана, часто нужно знать, сколько в ней символов. Для этого в Python есть встроенная функция len(). Она принимает строку и возвращает целое число — количество символов.
greeting = 'Привет'
n = len(greeting)
print(n) # 6
Результат можно сразу сохранить в переменную, как здесь, а потом использовать дальше в программе — например, сравнивать длины двух строк или выводить в сообщении.
Важный момент: len() считает все символы без исключения. Пробел — символ. Запятая — символ. Восклицательный знак — тоже:
phrase = 'Привет, мир!'
print(len(phrase)) # 12
Здесь двенадцать символов: шесть букв слова «Привет», запятая, пробел, три буквы слова «мир» и восклицательный знак. Интуитивно кажется, что «слов два», но len() работает посимвольно, не пословно.
Ещё одна деталь: пустая строка '' содержит ноль символов, и len('') вернёт 0. Это не ошибка — просто строка без содержимого.
Типичные ошибки и сквозной пример
Соберём всё вместе в одной программе — так проще увидеть, как строковый литерал, конкатенация, повторение и len() работают совместно:
# Создаём строки
greeting = 'При' + 'вет' # конкатенация двух литералов
name = "Мария"
# Собираем приветствие
message = greeting + ', ' + name + '!'
print(message) # Привет, Мария!
# Рисуем разделитель нужной длины
separator = '-' * len(message)
print(separator) # --------------
# Длина готовой строки
print(len(message)) # 14
Что здесь происходит: len(message) возвращает число символов в message (их ровно 14), и это число сразу передаётся в * — разделитель получается ровно той же ширины, что и сообщение. Ни одна из переменных не меняется после создания: каждый + и * порождает новую строку.
Ошибка, которую легко совершить
Когда нужно добавить число к строке, первый импульс — написать +. Например:
score = 42
print('Счёт: ' + score) # TypeError!
Python выбросит:
TypeError: can only concatenate str (not "int") to str
Он не пытается угадать, что вы имели в виду. Строка и целое число — разные типы, и + не умеет их смешивать. Сообщение об ошибке прямо указывает на причину: can only concatenate str (not "int") to str.
Сейчас достаточно уметь читать это сообщение и понимать: один из операндов оказался не строкой. Как правильно соединять строки с числами — разберём в одном из следующих уроков.
Попробуйте решить
Какие два варианта записи создают одно и то же строковое значение в Python?
Продолжить с проверкой и прогрессом
Откройте интерактивный раннер с заданиями урока.
