Иногда текст в программе должен состоять из нескольких строк. Например, при генерации письма, создании шаблона, форматировании сообщения об ошибке или просто работе с длинными текстами.
Конечно, можно использовать символ перевода строки \n
, как мы делали раньше:
text = 'Пример текста,\nсостоящего из\nнескольких строк'
На печати строка будет выглядеть вот так:
Пример текста,
состоящего из
нескольких строк
Но такой способ становится неудобным, особенно если строка длинная или нужно часто добавлять новые переносы. Каждый \n
приходится вставлять вручную, и это ухудшает читаемость кода.
В Python есть более удобный способ записывать текст в несколько строк — многострочные строки (multi-line strings).
Чтобы создать такую строку, нужно заключить текст в тройные кавычки — '''
или """
:
text = '''Пример текста,
состоящего из
нескольких строк'''
Теперь в коде всё выглядит так же, как и при выводе:
Пример текста,
состоящего из
нескольких строк
Если вы закрываете тройные кавычки на новой строке, Python включает и эту строку в результат:
text = '''Пример текста,
состоящего из
нескольких строк
'''
Вывод:
Пример текста,
состоящего из
нескольких строк
Обратите внимание: появляется пустая строка в конце. Чтобы её избежать — не переносите закрывающие кавычки на новую строку:
text = '''Пример текста,
состоящего из
нескольких строк'''
✅ Преимущества multi-line строк
quote = '''Здесь не нужно экранировать 'одинарные' и "двойные" кавычки'''
Многострочные строки можно сочетать с f-строками, чтобы подставлять значения переменных:
a = 'А'
b = 'B'
text = f'''{a} и {b}
сидели на трубе'''
А и B
сидели на трубе
Это особенно удобно для шаблонов, писем, сообщений об ошибках и многострочных описаний.
Python может обработать и строки с \n
, и многострочные строки. Для интерпретатора это одно и то же. Но для человека, читающего код, multi-line строки намного удобнее и нагляднее.
Запишите в переменную text
текст, который приведен ниже. Используйте тройные кавычки.
Lannister, Targaryen, Baratheon, Stark, Tyrell...
they're all just spokes on a wheel.
This one's on top, then that one's on top, and on and on it spins,
crushing those on the ground.
Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник". Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт
Ваше упражнение проверяется по этим тестам
1from hexlet.test import expect_output
2
3
4def test(capsys):
5 expected = """Lannister, Targaryen, Baratheon, Stark, Tyrell...
6they're all just spokes on a wheel.
7This one's on top, then that one's on top, and on and on it spins,
8crushing those on the ground."""
9 expect_output(capsys, expected)
10
Решение учителя откроется через: