В этом уроке мы познакомимся с одним из самых гибких инструментов для работы со строками в Python — методом `.format()`. Этот метод позволяет создавать строки по шаблону, вставляя в них нужные данные. Это гораздо удобнее и читабельнее, чем склеивать строки с помощью знака `+`.
Вы научитесь вставлять переменные в текст, использовать именованные аргументы для большей ясности и управлять отображением чисел: задавать количество знаков после запятой, выравнивать текст и многое другое. Эти навыки незаменимы для вывода информации в красивом и структурированном виде, будь то простое сообщение для пользователя или сложный отчет. Мы начнем с простых примеров и постепенно перейдем к более продвинутым техникам форматирования с использованием специальных плейсхолдеров.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Базовое форматирование строки
Давайте создадим первое отформатированное сообщение. В коде уже есть шаблон строки с одним плейсхолдером `{}`. Ваша задача — передать в метод `.format()` строковое значение, чтобы получилось приветствие "Привет, Python!".
message_template = "Привет, {}!"
print(message_template.format(input1S))Несколько аргументов
Метод `.format()` может работать с несколькими значениями одновременно. Вставьте в метод переменные `item` и `quantity` в правильном порядке, чтобы программа вывела "На складе есть Яблоки в количестве 15 кг."
item = "Яблоки"
quantity = 15
print("На складе есть {} в количестве {} кг.".format(input1S, input2S))Порядок имеет значение
Иногда порядок аргументов в `.format()` не совпадает с порядком плейсхолдеров в строке. Для этого в плейсхолдерах можно указывать номера аргументов (нумерация с 0). Предскажите, что выведет данный код.
print("{1} продает {0}, а {2} покупает {0}".format("яблоки", "Анна", "Иван"))Именованные аргументы
Чтобы не путаться в порядке, можно давать аргументам имена и использовать их в плейсхолдерах. Соберите вызов метода `.format()`, используя токены из банка, чтобы сформировать строку о пользователе.
user_info = "Пользователь: {name}, Возраст: {age}"
print(user_info.format(input1S, input2S))Исправьте ошибку в плейсхолдерах
В этом коде допущена синтаксическая ошибка при определении плейсхолдеров. Найдите и исправьте строку с ошибкой, чтобы программа корректно вывела информацию о книге.
book = "1984"author = "Джордж Оруэлл"print("Книга [book] была написана автором [author]".format(book=book, author=author))Предскажите результат с форматированием числа
Метод `.format()` позволяет не только подставлять значения, но и форматировать их. В этом примере используется спецификатор для форматирования числа с плавающей точкой. Введите, что именно выведет этот код.
price = 45.996
print("Итоговая цена: {:.2f}".format(price))Сопоставьте спецификаторы форматирования
Внутри плейсхолдеров можно использовать специальные коды (спецификаторы), которые управляют внешним видом вывода. Сопоставьте спецификаторы форматирования в правой колонке с их описанием в левой.
:f:%:d:^:>Выравнивание и заполнение
Что выведет этот код? Здесь используется выравнивание по центру `^` внутри поля шириной 11 символов, а в качестве заполнителя вместо пробела используется символ `*`.
print("{:*^11}".format("Python"))Соберите код для форматирования отчета
Соберите из фрагментов работающий скрипт. Скрипт должен объявлять переменные для города и температуры, а затем выводить отформатированное сообщение: "Погода в городе Москва: 23.5 C". Одна из строк лишняя.
print(template.format(city=city_name, temp=temperature))city_name = "Москва"temperature = 23.5print(city_name, temperature)template = "Погода в городе {city}: {temp} C"Неверный тип спецификатора
Программа пытается вывести целое число, но использует для этого неподходящий спецификатор форматирования, что приведет к ошибке `ValueError`. Исправьте спецификатор в строке с `print`, чтобы код заработал.
count = 100print("В наличии {0:f} единиц товара.".format(count))