До появления f-строк и метода `.format()`, в Python доминировал другой способ форматирования — с помощью оператора процента (`%`). Этот метод, унаследованный от языка C, до сих пор можно встретить в старом коде или в некоторых библиотеках, например, для логирования. Понимать его синтаксис — значит быть готовым к работе с любым Python-проектом. В этом уроке мы разберем, как использовать спецификаторы вроде `%s` для строк и `%d` для чисел, как передавать одну или несколько переменных и как форматировать числа с нужной точностью. Эти навыки сделают вас более универсальным разработчиком.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Функция input().
- Форматирование вывода print().
- F-строки.
- Метод format().
- Старое форматирование %.
- Модуль 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: Продвинутые возможности
Основы форматирования с `%`
Используйте классический стиль форматирования с оператором `%`, чтобы вставить имя пользователя в строку. Вам нужно указать спецификатор для строки в одном месте и оператор форматирования в другом.
name = "Алиса"
message = "Привет, input1S!" input2S name
print(message)Форматирование с несколькими переменными
При форматировании с несколькими переменными их нужно передавать в виде кортежа (в круглых скобках), и порядок имеет значение. Проанализируйте код и выберите, что он выведет на экран.
product = "яблоки"
quantity = 5
print("У вас есть %s в количестве %d шт." % (product, quantity))Спецификаторы для разных типов данных
В форматировании с `%` для каждого основного типа данных существует свой спецификатор. Сопоставьте спецификаторы в правой колонке с типами данных, для которых они предназначены, в левой.
%f%s%dОшибка несоответствия типов
Этот код не сработает, потому что программист перепутал спецификаторы: пытается вставить строку (`name`) с помощью числового спецификатора `%d`, а число (`age`) — с помощью строкового `%s`. Поменяйте спецификаторы местами, чтобы исправить код.
name = "Борис"age = 42print("Пользователь: %d, возраст: %s" % (name, age))Форматирование дробных чисел
Для чисел с плавающей точкой можно управлять количеством знаков после запятой. Дополните код, используя спецификатор `%f` с нужным модификатором, чтобы вывести стоимость `price` с точностью до двух знаков.
price = 199.951234
print("Цена товара: input1S руб." % price)Соберите строку для чека
Соберите из фрагментов кода программу, которая формирует строку товарного чека. Сначала нужно объявить переменные для товара и его цены, а затем использовать их в строке форматирования. Одна из строк лишняя и не нужна для решения задачи.
print("Товар: %s - Цена: %.2f руб." % (item, cost))cost = 3.50print(item)item = "Кофе"Экранирование символа процента
Иногда в форматируемой строке нужно вывести сам символ процента `%`. Чтобы Python не посчитал его спецификатором, символ нужно "экранировать", то есть удвоить — `%%`. Какой результат выведет этот код? Введите точную строку.
discount = 15
print("Ваша скидка составляет %d%%." % discount)Пропущенные скобки кортежа
При передаче нескольких переменных для форматирования их необходимо заключать в кортеж, то есть в круглые скобки. В этом коде программист забыл это сделать, что приведет к ошибке `TypeError`. Исправьте строку, добавив недостающие скобки.
name = "Ирина"score = 98print("Игрок %s набрал %d очков" % name, score)Соберите сложную строку из банка
Используя токены из банка, соберите полную и рабочую строку форматирования. Нужно вывести имя, возраст и средний балл студента, отформатировав балл до одного знака после запятой. Некоторые токены из банка лишние.
student_name = "Олег"
student_age = 20
avg_grade = 4.75
print(input1S input2S input3S)