Старое форматирование %

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

До появления f-строк и метода `.format()`, в Python доминировал другой способ форматирования — с помощью оператора процента (`%`). Этот метод, унаследованный от языка C, до сих пор можно встретить в старом коде или в некоторых библиотеках, например, для логирования. Понимать его синтаксис — значит быть готовым к работе с любым Python-проектом. В этом уроке мы разберем, как использовать спецификаторы вроде `%s` для строк и `%d` для чисел, как передавать одну или несколько переменных и как форматировать числа с нужной точностью. Эти навыки сделают вас более универсальным разработчиком.

Список тем

Основы форматирования с `%`

id: 39974_task_percent_1

Используйте классический стиль форматирования с оператором `%`, чтобы вставить имя пользователя в строку. Вам нужно указать спецификатор для строки в одном месте и оператор форматирования в другом.

Заполните пропуски
name = "Алиса"
message = "Привет, input1S!" input2S name
print(message)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Форматирование с несколькими переменными

id: 39974_task_percent_2

При форматировании с несколькими переменными их нужно передавать в виде кортежа (в круглых скобках), и порядок имеет значение. Проанализируйте код и выберите, что он выведет на экран.

Выберите правильный вариант ответа
product = "яблоки"
quantity = 5
print("У вас есть %s в количестве %d шт." % (product, quantity))
Сообщения
Проверить
Показать подсказку

Спецификаторы для разных типов данных

id: 39974_task_percent_3

В форматировании с `%` для каждого основного типа данных существует свой спецификатор. Сопоставьте спецификаторы в правой колонке с типами данных, для которых они предназначены, в левой.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Для вставки любого объекта (преобразованного в строку)
Для вставки целого десятичного числа
Для вставки числа с плавающей точкой
%f
%s
%d
Сообщения
Проверить
Показать подсказку

Ошибка несоответствия типов

id: 39974_task_percent_4

Этот код не сработает, потому что программист перепутал спецификаторы: пытается вставить строку (`name`) с помощью числового спецификатора `%d`, а число (`age`) — с помощью строкового `%s`. Поменяйте спецификаторы местами, чтобы исправить код.

Найдите ошибку и исправьте
name = "Борис"
age = 42
print("Пользователь: %d, возраст: %s" % (name, age))
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Форматирование дробных чисел

id: 39974_task_percent_5

Для чисел с плавающей точкой можно управлять количеством знаков после запятой. Дополните код, используя спецификатор `%f` с нужным модификатором, чтобы вывести стоимость `price` с точностью до двух знаков.

Заполните пропуски
price = 199.951234
print("Цена товара: input1S руб." % price)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите строку для чека

id: 39974_task_percent_6

Соберите из фрагментов кода программу, которая формирует строку товарного чека. Сначала нужно объявить переменные для товара и его цены, а затем использовать их в строке форматирования. Одна из строк лишняя и не нужна для решения задачи.

Перетяните в правильном порядке строки из одного блока в другой
print("Товар: %s - Цена: %.2f руб." % (item, cost))
cost = 3.50
print(item)
item = "Кофе"
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Экранирование символа процента

id: 39974_task_percent_7

Иногда в форматируемой строке нужно вывести сам символ процента `%`. Чтобы Python не посчитал его спецификатором, символ нужно "экранировать", то есть удвоить — `%%`. Какой результат выведет этот код? Введите точную строку.

Что должно получиться?
discount = 15
print("Ваша скидка составляет %d%%." % discount)
Сообщения
Проверить
Показать подсказку

Пропущенные скобки кортежа

id: 39974_task_percent_8

При передаче нескольких переменных для форматирования их необходимо заключать в кортеж, то есть в круглые скобки. В этом коде программист забыл это сделать, что приведет к ошибке `TypeError`. Исправьте строку, добавив недостающие скобки.

Найдите ошибку и исправьте
name = "Ирина"
score = 98
print("Игрок %s набрал %d очков" % name, score)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите сложную строку из банка

id: 39974_task_percent_9

Используя токены из банка, соберите полную и рабочую строку форматирования. Нужно вывести имя, возраст и средний балл студента, отформатировав балл до одного знака после запятой. Некоторые токены из банка лишние.

Нужно правильно расставить в пропуски предложенные варианты
student_name = "Олег"
student_age = 20
avg_grade = 4.75
print(input1S input2S input3S)
"Студент: %s, возраст: %d, балл: %.1f"
%
(student_name, student_age, avg_grade)
student_name
f""
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру