Основы работы со строками
Строки в Python представлены типом str (от англ. string – строка) и представляют собой упорядоченные последовательности символов, заключённые в кавычки. Строки используются для хранения и обработки текстовой информации. Будь то имена, адреса, тексты книг или любые другие данные, которые можно представить в виде текста, в Python они обычно обрабатываются как строки.
Для создания строковой переменной достаточно заключить любой текст в одинарные (') или в двойные (") кавычки:
message = 'Что на ужин?'
reply_message = "" # Пустая строка – тоже строка
Длинные строки
Если строка очень длинная, то её можно разбить на части с помощью тройных кавычек:
recipe = """Ингредиенты:
1–2 столовые ложки растительного масла или кусочек сливочного;
1 или несколько яиц;
соль — по вкусу."""
print(recipe)
При выводе такой строки на экран в ней сохранятся все символы, включая переносы строк:
Ингредиенты:
1–2 столовые ложки растительного масла или кусочек сливочного;
1 или несколько яиц;
соль — по вкусу.
Избежать этого можно с помощью разбиения длинной строки на несколько частей и заключения их в круглые скобки:
info = ("Тест Тьюринга — эмпирический тест, идея которого была "
"предложена Аланом Тьюрингом в статье «Вычислительные машины "
"и разум», опубликованной в 1950 году в философском журнале"
" Mind. Тьюринг задался целью определить, может ли машина "
"мыслить.")
print(info)
Python автоматически объединит эти части в одну строку и в полученной строке переносов строк не будет:
Тест Тьюринга — эмпирический тест, идея которого была предложена Аланом Тьюрингом в статье «Вычислительные машины и разум», опубликованной в 1950 году в философском журнале Mind. Тьюринг задался целью определить, может ли машина мыслить.
Обратите внимание, что запятые между строками в скобках ставить не нужно, иначе будет создан кортеж, а не строка.
Преобразование в строку
Практически для любого объекта в Python можно получить его строковое представление с помощью функции str(). Это означает, что мы можем преобразовать любые числа в строки.
|
Функция |
|
|
Описание |
Возвращает строку, полученную из объекта |
|
Параметры |
|
|
Возвращаемое значение |
Строка |
Например, преобразуем в строку целое число:
number = 21
str_number = str(number)
print(str_number)
# Вывод: 21
При выводе на экран может быть не так очевидно, что переменная number хранит строку, однако мы можем убедиться в этом с помощью функции type():
print(type(str_number))
# Вывод: <class 'str'>
Если функции str() передано арифметическое выражение, то сначала оно будет вычислено, и только затем преобразовано:
print(str(30 + 1))
# Вывод: 31
Базовые операции со строками
Python предоставляет несколько базовых операций для работы со строками: конкатенацию (сложение) и повторение (умножение).
Конкатенация (сложение) строк
Операция конкатенации объединяет две строки в одну новую строку с помощью оператора сложения (+).
fist_name = "Бильбо"
last_name = "Бэггинс"
print(fist_name + " " + last_name)
# Вывод: Бильбо Бэггинс
Как и при сложении чисел, допускается использовать оператор присваивания со сложением (+=). Тогда результат конкатенации строк будет сразу же присвоен переменной слева:
name = "Фродо"
last_name = "Бэггинс"
name += last_name
print(name)
# Вывод: ФродоБэггинс
При этом оператор += не изменяет исходную строку, а создаёт новый объект, который присваивает переменной name. Это связано с неизменяемостью строк.
Конкатенация возможна только между двумя строками. Попытка сложить строку с числом приведет к ошибке TypeError. Чтобы избежать этого, число должно быть преобразовано в строку с помощью функции str():
amount = 3
print("Яблоки: " + str(amount))
# Вывод: Яблоки: 3
Повторение (умножение) строк
Оператор умножения * при работе со строками выполняет операцию повторения. Он создаёт новую строку, которая является результатом многократного повторения исходной строки. Левый операнд должен быть строкой, а правый – целым числом, указывающим, сколько раз необходимо повторить строку:
print("Кар-кар" * 3)
# Вывод: Кар-карКар-карКар-кар
Здесь также разрешается использование оператора присваивания с умножением (*=), который создаёт новую строку и присваивает её переменной слева:
song = "о-оу"
song *= 3
print(song)
# Вывод: о-оуо-оуо-оу
Форматирование строк
Форматирование строк – это процесс создания новых строк путем вставки в них значений переменных или результатов выражений в определенном формате. Python предлагает несколько способов форматирования строк.
Для этого мы можем использовать уже знакомую нам конкатенацию строк:
first_name = "Энакин"
last_name = "Скайуокер"
age = 26
print("Меня зовут " + first_name + " " + last_name + ". Мне " + str(age) + " лет.")
# Вывод: Меня зовут Энакин Скайуокер. Мне 26 лет.
Однако, чем больше в такой строке переменных, тем сложнее она становится для чтения. Также необходимо следить за тем, чтобы все элементы были строками, при необходимости используя функцию str().
Одним из самых удобных и современных способов встраивания выражений в строку является использование f-строк (форматированных строковых литералов). Для того, чтобы создать f-строку, достаточно поставить префикс f перед открывающей кавычкой строки, а любые переменные или выражения Python заключить в фигурные скобки:
print(f"Меня зовут {first_name} {last_name}. Мне {age} лет.")
# Вывод: Меня зовут Энакин Скайуокер. Мне 26 лет.
Одним из преимуществ f-строк является то, что больше не нужно вручную преобразовывать типы данных в строки – Python сделает это автоматически внутри фигурных скобок. Кроме того, f-строки обычно работают быстрее, чем конкатенация с использованием оператора +.
Также внутри фигурных скобок в f-строках можно использовать любые допустимые выражения Python, включая арифметические операции и вызовы функций:
n = 2
power = 8
print(f"{n} в степени {power} равняется {n ** power}")
# Вывод: 2 в степени 8 равняется 256
Кроме этого, f-строки поддерживают спецификаторы формата, которые контролируют, как именно отображается значение внутри строки. Спецификатор формата следует после двоеточия внутри фигурных скобок.
Например, для дробного числа можно указать количество знаков после запятой:
pi = 3.1415926535
print(f"Число Пи приблизительно равно {pi:.2f}")
# Вывод: Число Пи приблизительно равно 3.14
Здесь .2f – спецификатор формата, который задает желаемое количество знаков после десятичной точки (в данном случае 2), а также указывает, что число должно быть отформатировано как число с плавающей точкой (f от float).
Примеры
Пример 1. Вывод на экран приветственного сообщения
Программа выводит на экран многострочное приветственное сообщение:
# Используем тройные кавычки для сохранения переносов строк
welcome_message_triple_quotes = """Добро пожаловать в программу!
Пожалуйста, ознакомьтесь с правилами:
1. Соблюдайте конфиденциальность.
2. Будьте вежливы.
3. Улыбнитесь.
Спасибо за сотрудничество!"""
print(welcome_message_triple_quotes, end="\n\n")
# Объединяем строки в скобках для создания одной длинной строки
welcome_message_parentheses = (
"Сегодняшний день - чистый лист бумаги, на котором "
"предстоит нарисовать самые яркие краски своей жизни. "
)
print(welcome_message_parentheses)
Вывод:
Добро пожаловать в программу!
Пожалуйста, ознакомьтесь с правилами:
1. Соблюдайте конфиденциальность.
2. Будьте вежливы.
3. Улыбнитесь.
Спасибо за сотрудничество!
Сегодняшний день - чистый лист бумаги, на котором предстоит нарисовать самые яркие краски своей жизни.
Пример 2. Создание отчёта о продажах
Программа выводит на экран краткий отчет о продажах, включающий в себя количество проданных товаров, общую выручку и долю каждого товара в выручке, округлённую до двух знаков после запятой. процентные значения.
# Данные о продажах товара A и товара B
product_a_name = "Мышь беспроводная" # Название товара A
product_a_sales = 140 # Всего продано товара A
product_a_revenue = 13553.5 # Общая выручка по товару A
product_b_name = "Клавиатура беспроводная" # Название товара B
product_b_sales = 75 # Всего продано товара B
product_b_revenue = 28373.5 # Общая выручка по товару B
# Общие показатели
total_sales = product_a_sales + product_b_sales # Всего продано
total_revenue = product_a_revenue + product_b_revenue # Общая выручка
# Расчет доли каждого товара в общей выручке в процентах
product_a_share = (product_a_revenue / total_revenue) * 100
product_b_share = (product_b_revenue / total_revenue) * 100
print(f"Общее количество проданных товаров: {total_sales} шт.")
print(f"Общая выручка: {total_revenue} руб.\n")
print(f"Товар: {product_a_name}")
print(f" Продано: {product_a_sales} шт.")
print(f" Выручка: {product_a_revenue} руб.")
print(f" Доля в общей выручке: {product_a_share:.1f}%")
print(f"Товар: {product_b_name}")
print(f" Продано: {product_b_sales} шт.")
print(f" Выручка: {product_b_revenue} руб.")
print(f" Доля в общей выручке: {product_b_share:.1f}%")
Вывод:
Общее количество проданных товаров: 215 шт.
Общая выручка: 41927.0 руб.
Товар: Мышь беспроводная
Продано: 140 шт.
Выручка: 13553.5 руб.
Доля в общей выручке: 32.3%
Товар: Клавиатура беспроводная
Продано: 75 шт.
Выручка: 28373.5 руб.
Доля в общей выручке: 67.7%
Итоги
- Строки – упорядоченные последовательности символов, заключённые в кавычки.
- Длинные строки можно разбивать на части с помощью тройных кавычек (сохраняются переносы строк) или круглых скобок (не сохраняются переносы строк)
- Функция
str()преобразует практически любой объект (включая числа и результаты выражений) в строку. - Конкатенация (
+) объединяет две или более строк в одну. - Повторение (
*) создаёт новую строку путём многократного повторения исходной строки (строка * целое число). - F-строки позволяют встраивать переменные или выражения в строку с помощью фигурных скобок.
- F-строки поддерживают спецификаторы формата (например,
{pi:.2f}для округления дробных чисел).
Задания для самопроверки
1. Чем отличаются длинные строки, созданные с помощью тройных кавычек от строки, разделённой с помощью скобок?
Они сохраняют перенос строки.
2. Преобразуйте число 23 в строку.
str_number = str(23)
3. Найдите и исправьте ошибку в данном коде:
price = 17
str_price = str(price)
print(price + " долларов")
price = 17
str_price = str(price)
print(str_price + " долларов")
Вместо целочисленной переменной price при конкатенации строк следует использовать строковую переменную str_price.
4. Используйте оператор умножения (*) и создайте строку "УраУраУраУраУраУраУра" из строки "Ура".
print("Ура" * 7)
5. Что будет выведено на экран в результате выполнения данного кода?
number1 = 3
number2 = 5
print(f"Сумма чисел {number1} и {number2} равна {number1 + number2}")
Сумма чисел 3 и 5 равна 8
6. Используйте спецификаторы формата и выведите на экран число Эйлера e = "2.7182818284" с тремя знаками после точки.
e = "2.7182818284"
print(f"Число Эйлера приблизительно равно {e:.2f}")
# Вывод: Число Эйлера приблизительно равно 2.718
0 комментариев