Python: Интерполяция
Вспомним как работает конкатенация. Для этого мы соединяем нужные строки (или переменные со строками внутри) с помощью знака +.
first_name = 'Joffrey'
greeting = 'Hello'
print(greeting + ", " + first_name + "!")
# => Hello, Joffrey!Но при этом в сложных выражениях становится трудно сразу увидеть, какой текст получится на выходе. Особенно если в строке используются пробелы, запятые или кавычки: они начинают мешать восприятию. Даже текущий пример требует небольшого напряжения, чтобы понять, какой получится строка.
По этой причине во многих языках существует операция, которая называется интерполяция. Интерполяция представляет собой способ встраивать значения переменных прямо внутрь строки. В Python для этого используются f-строки (или format-строки). Вот так:
first_name = 'Joffrey'
greeting = 'Hello'
print(f'{greeting}, {first_name}!')
# => Hello, Joffrey!Буква f перед кавычками указывает, что внутри строки можно использовать переменные. Их имена записываются в фигурных скобках, и Python автоматически подставляет нужные значения.
first_name = 'Joff'
greeting = 'Hello'
f'{greeting}, {first_name}!'
└───┬───┘ └────┬─────┘
'Hello' 'Joff'
└──────┬───────┘
'Hello, Joff!'Сравните эти два примера рядом:
print(greeting + ", " + first_name + "!")
print(f'{greeting}, {first_name}!')Второй вариант проще и понятнее.
Пример
school = 'Hexlet'
what_is_it = f'{school} - online courses'
print(what_is_it) # => Hexlet - online coursesТакая запись легко читается: пробелы, дефисы и символы видны сразу. Строка выглядит именно так, как она появится в выводе. Это делает код понятным и удобным в поддержке. По этой причине в большинстве языков интерполяция является более предпочтительной чем конкатенация.
Почему это важно
Интерполяция предпочтительнее конкатенации почти во всех современных языках программирования. Она:
- Упрощает структуру строк.
- Улучшает читаемость кода.
- Снижает количество ошибок при работе с пробелами и знаками препинания.
Задание
Интернет-магазин отправляет покупателю подтверждение заказа. Имя покупателя и номер заказа уже хранятся в переменных — нужно подставить их в шаблон сообщения с помощью f-строки.
Используйте переменные username и order_number, чтобы вывести на экран:
Здравствуйте, Анна! Ваш заказ #1337 принят.Полезное
Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Ваше упражнение проверяется по этим тестам
import runpy
def test(capsys):
expected = "Здравствуйте, Анна! Ваш заказ #1337 принят."
runpy.run_module('solution')
out, _ = capsys.readouterr()
assert out.strip() == expectedРешение учителя откроется через:
20:00
