Основные операции со строками и форматирование
Строки — это текст, который вы храните и обрабатываете в Python. Представьте, что это кирпичики, из которых строятся все сообщения, имена, адреса и любая другая текстовая информация.
Важно запомнить: строки в Python неизменяемы. Это значит, что, создав строку, вы не можете изменить её часть. Любая операция, которая кажется изменением, на самом деле создаёт совершенно новую строку. Это как если бы вы не могли перекрасить кирпич, а вместо этого брали новый, уже нужного цвета.
Объединяем текст: конкатенация
Нужно склеить два или больше текстовых "кирпичика" в один? Используйте конкатенацию — это простое соединение строк. В Python для этого есть оператор +.
greeting = "Привет"
name = "Мир"
full_message = greeting + ", " + name + "!"
print(full_message) # Вывод: Привет, Мир!
# Можно объединять сколько угодно строк
part1 = "Python"
part2 = " - это"
part3 = " мощный язык!"
sentence = part1 + part2 + part3
print(sentence) # Вывод: Python - это мощный язык!
Важно: Оператор
+работает только со строками. Попытка сложить строку с числом ("Мне " + 30) вызовет ошибкуTypeError. Чтобы этого избежать, превратите число в строку с помощью функцииstr():
age = 30
message = "Мне " + str(age) + " лет." # Превращаем число 30 в строку "30"
print(message) # Вывод: Мне 30 лет.
Умножаем текст: повторение строк
Хотите повторить строку несколько раз? Используйте оператор умножения *.
word = "Ура! "
repeated_word = word * 3
print(repeated_word) # Вывод: Ура! Ура! Ура!
separator = "=" * 20 # Удобно для создания разделителей
print(separator) # Вывод: ====================
Длина строки: функция len()
Чтобы узнать, сколько символов в строке, используйте функцию len(). Она вернёт количество символов, включая пробелы и знаки препинания.
text = "Привет, Python!"
length = len(text)
print(f"Длина строки: {length}") # Вывод: Длина строки: 15
Доступ к символам и срезы строк
Каждый символ в строке имеет свой индекс — порядковый номер. В Python отсчёт начинается с 0.
my_string = "Программирование"
# 0123456789...
first_char = my_string[0] # Первый символ
print(first_char) # Вывод: П
fifth_char = my_string[4] # Пятый символ
print(fifth_char) # Вывод: р
Можно считать и с конца строки, используя отрицательные индексы: -1 — последний символ, -2 — предпоследний и так далее.
last_char = my_string[-1]
print(last_char) # Вывод: е
second_last_char = my_string[-2]
print(second_last_char) # Вывод: и
Срезы (slices)
Срезы позволяют вырезать часть строки — подстроку. Это очень мощный инструмент! Синтаксис такой: [start:end:step].
start: Индекс, с которого начинаем (включая этот символ). Если не указан, начинаем с0.end: Индекс, на котором заканчиваем (НЕ включая этот символ). Если не указан, идём до конца строки.step: Шаг, с которым выбираем символы (по умолчанию1).
s = "Hello, World!"
# Срез от начала до 5-го символа (не включая его)
sub1 = s[0:5]
print(sub1) # Вывод: Hello
# Срез с 7-го символа до конца
sub2 = s[7:]
print(sub2) # Вывод: World!
# Срез всей строки с шагом 2 (каждый второй символ)
sub3 = s[::2]
print(sub3) # Вывод: Hlo ol!
# Копирование строки (срез всей строки)
copy_s = s[:]
print(copy_s) # Вывод: Hello, World!
# Переворот строки (шаг -1)
reversed_s = s[::-1]
print(reversed_s) # Вывод: !dlroW ,olleH
Методы строк: полезные операции
Строки в Python — это не просто набор символов, это объекты со встроенными методами. Методы — это как маленькие программы, которые умеют что-то делать со строкой. Вызываются они через точку после имени переменной со строкой: моя_строка.метод().
Вот самые полезные:
.upper(): Все буквы станут заглавными..lower(): Все буквы станут строчными..capitalize(): Только первая буква строки станет заглавной, остальные — строчными..title(): Каждое слово в строке начнётся с заглавной буквы..strip(): Удаляет пробелы (и другие "пустые" символы, вроде табуляции) с начала и конца строки..replace(old, new): Заменяет все вхожденияold(старой подстроки) наnew(новую подстроку)..find(sub): Ищет подстрокуsubи возвращает индекс её первого появления. Если не находит, возвращает-1..count(sub): Считает, сколько раз подстрокаsubвстречается в строке..startswith(prefix): Проверяет, начинается ли строка сprefix. ВозвращаетTrueилиFalse..endswith(suffix): Проверяет, заканчивается ли строка наsuffix. ВозвращаетTrueилиFalse..split(sep): Разделяет строку на список подстрок по разделителюsep. Еслиsepне указан, разбивает по пробелам..join(iterable): Объединяет элементы списка (или другого итерируемого объекта) в одну строку, используя исходную строку как разделитель.
text = " Привет, мир Python! "
print(text.upper()) # Вывод: ПРИВЕТ, МИР PYTHON!
print(text.lower()) # Вывод: привет, мир python!
print(text.strip()) # Вывод: Привет, мир Python!
print(text.replace("мир", "планета")) # Вывод: Привет, планета Python!
sentence = "Это тестовая строка."
print(sentence.find("тест")) # Вывод: 4 (индекс начала "тест")
print(sentence.count("т")) # Вывод: 3
words = ["Привет", "как", "дела?"]
joined_string = " ".join(words) # Объединяем слова пробелом
print(joined_string) # Вывод: Привет как дела?
Форматирование строк: делаем вывод красивым
Форматирование строк позволяет вставлять значения переменных прямо в текст, создавая динамичные и понятные сообщения.
1. F-строки (Formatted String Literals) ✨
Это самый современный, удобный и рекомендуемый способ форматирования, доступный с Python 3.6. Просто добавьте f перед открывающей кавычкой, а переменные или даже выражения заключайте в фигурные скобки {}.
name = "Алексей"
age = 25
city = "Москва"
# Простой пример
message = f"Привет, меня зовут {name}, мне {age} лет."
print(message) # Вывод: Привет, меня зовут Алексей, мне 25 лет.
# С выражениями и форматированием чисел
price = 100
discount = 0.1
final_price = f"Цена со скидкой: {price * (1 - discount):.2f} руб." # :.2f - два знака после запятой
print(final_price) # Вывод: Цена со скидкой: 90.00 руб.
# Можно выводить значения из словарей
user_data = {"name": "Мария", "age": 30}
print(f"Пользователь: {user_data['name']}, Возраст: {user_data['age']}")
# Вывод: Пользователь: Мария, Возраст: 30
Совет:
:.2f— это спецификатор форматирования. Он говорит Python, что число с плавающей точкой (f) нужно вывести с двумя знаками после запятой. Это очень полезно для денег или других точных значений.
2. Метод .format() (классика)
Этот метод был основным до появления f-строк. Он тоже использует {} как заполнители, а значения передаются в сам метод .format().
product = "Ноутбук"
price = 75000
message = "Товар: {}, Цена: {} руб.".format(product, price)
print(message) # Вывод: Товар: Ноутбук, Цена: 75000 руб.
# Можно указывать индексы заполнителей, чтобы порядок не имел значения
message_indexed = "Цена: {1} руб., Товар: {0}.".format(product, price)
print(message_indexed) # Вывод: Цена: 75000 руб., Товар: Ноутбук.
# Можно использовать именованные аргументы для большей ясности
message_named = "Город: {city}, Страна: {country}.".format(city="Санкт-Петербург", country="Россия")
print(message_named) # Вывод: Город: Санкт-Петербург, Страна: Россия.
3. Старый способ с оператором % (не используйте!)
Этот способ пришёл из языка C и считается устаревшим. Вы можете встретить его в старом коде, но для новых проектов всегда используйте f-строки.
name = "Иван"
balance = 1500.75
message = "Пользователь: %s, Баланс: %.2f руб." % (name, balance)
print(message) # Вывод: Пользователь: Иван, Баланс: 1500.75 руб.
Моя рекомендация: Всегда используйте f-строки для форматирования, если работаете с Python 3.6 и выше. Они самые читабельные, удобные и быстрые.
Практическое задание: Складской учёт 📦
Представьте, что вы пишете программу для склада. Вам нужно вывести информацию о товаре в красивом и понятном формате.
- Создайте три переменные:
item_name(название товара, например,"Смартфон")quantity(количество, например,150)unit_price(цена за единицу, например,25500.50)
- Используя f-строки, сформируйте сообщение:
"На складе имеется: Смартфон (150 шт.) по цене 25500.50 руб. за штуку. Общая стоимость: 3825075.00 руб."
- Убедитесь, что общая стоимость (
quantity * unit_price) выводится с двумя знаками после запятой.
- Убедитесь, что общая стоимость (
- Выведите полученное сообщение на экран.
item_name = "Смартфон"
quantity = 150
unit_price = 25500.50
total_cost = quantity * unit_price
message = f"На складе имеется: {item_name} ({quantity} шт.) по цене {unit_price:.2f} руб. за штуку. Общая стоимость: {total_cost:.2f} руб."
print(message)
</details>
Отлично! Теперь вы умеете не только хранить текстовые данные, но и эффективно ими манипулировать, а также красиво выводить информацию. Это очень важный навык для любого программиста. В следующем разделе мы углубимся в мир операторов Python, которые позволят вам выполнять вычисления и строить логические выражения. Готовы к новым открытиям? 😉