Ранее мы уже склеивали строки напрямую. Теперь попробуем использовать переменные при конкатенации. Хорошая новость: синтаксис остаётся тем же. Просто подставляются значения переменных.
what = "Kings" + "road"
print(what) # => Kingsroad
Здесь всё просто: две строки соединяются в одну. Так работает конкатенация — оператор + складывает строки, создавая новую строку.
Если в переменной first лежит строка "Kings", мы можем спокойно склеить её с другой строкой:
first = "Kings"
what = first + "road"
print(what) # => Kingsroad
Python подставит значение переменной, выполнит операцию и создаст итоговую строку.
Точно так же можно объединить значения двух переменных, если обе содержат строки:
first = "Kings"
last = "road"
what = first + last
print(what) # => Kingsroad
Можно добавлять и пробелы:
full = first + " " + last
print(full) # => Kings road
Попробуем так:
age = 42
# print("Age: " + age) # ❌ Ошибка!
Программа выдаст ошибку: нельзя складывать строку и число. Чтобы склеить строку с числом, нужно преобразовать число в строку:
age = 42
print("Age: " + str(age)) # ✅ Age: 42
То же самое касается переменных с результатами вычислений:
price = 50 * 1.25 * 6.91 # => 431.875
print("Price in yuans: " + str(price)) # ✅
Функция str()
превращает любое значение (число, результат вычисления, булево и т.д.) в строку. Подробнее про функции мы поговорим в будущих уроках.
Сайты постоянно посылают письма своим пользователям. Типичная задача — сделать автоматическую отправку персонального письма, где в заголовке будет имя пользователя. Если где-то в базе сайта хранится имя человека в виде строки, то задача генерации заголовка сводится к конкатенации: например, нужно склеить строку Здравствуйте
со строкой, где записано имя.
Напишите программу, которая будет генерировать заголовок и тело письма, используя уже готовые переменные, и выводить получившиеся строки на экран.
Для заголовка используйте переменные first_name
и greeting
, запятую и восклицательный знак. Выведите это на экран в правильном порядке.
Для тела письма используйте переменные info
и intro
, при этом второе предложение должно быть на новой строке.
Результат на экране будет выглядеть так:
Hello, Joffrey! Here is important information about your account security. We couldn't verify your mother's maiden name.
Выполните задание, используя только два print()
.
Подумайте, с какой строкой и в каком порядке нужно склеивать переменные, чтобы получить такой двухстрочный вывод тела письма.
Помните, что можно создать строку, которая содержит только управляющую последовательность \n
. Вы можете конкатенировать эту строку с переменными для правильного форматирования текста.
Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник". Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт
Ваше упражнение проверяется по этим тестам
1from hexlet.test import expect_output
2
3
4def test(capsys):
5 expected = """Hello, Joffrey!
6Here is important information about your account security.
7We couldn't verify your mother's maiden name."""
8 expect_output(capsys, expected)
9
Решение учителя откроется через: