Мы хотим показать вот такой диалог:
- Are you hungry?
- Aaaarrrgh!
Попробуем вывести на экран строку с таким текстом:
print("- Are you hungry?- Aaaarrrgh!")
# => - Are you hungry?- Aaaarrrgh!
Как видите, результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа \n
:
print("- Are you hungry?\n- Aaaarrrgh!")
# => - Are you hungry?
# => - Aaaarrrgh!
\n
— это пример экранированной последовательности (escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.
Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:
- Привет!¶
- О, привет!¶
- Как дела?
Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.
Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:
\t
— разрыв, который получается при нажатии на кнопку Tab\r
— работает только в WindowsРаспознать такую управляющую конструкцию в тексте можно по символу \
. Программисты часто используют перевод строки \n
, чтобы правильно форматировать текст. Например, напишем такой код:
print("Gregor Clegane\nDunsen\nPolliver\nChiswyck")
Тогда на экран выведется:
Gregor Clegane
Dunsen
Polliver
Chiswyck
Когда работаете с символом перевода, учитывайте следующие моменты:
Не важно, что стоит перед или после \n
: символ или пустая строка. Перевод обнаружится и выполнится в любом случае
Строка может содержать только \n
:
print('Gregor Clegane') # Строка с текстом
print("\n") # Строка с невидимым символом перевода строки
print('Dunsen') # Строка с текстом
Программа выведет на экран:
Gregor Clegane
Dunsen
В коде последовательность \n
выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ
Если нужно вывести \n
как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один \
в начале. Последовательность \\n
отобразится как символы \
и n
, которые идут друг за другом:
print("Joffrey loves using \\n")
# => Joffrey loves using \n
В Windows для перевода строк по умолчанию используется \r\n
. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.
Дело в том, что последовательность \r\n
имеет разную трактовку в зависимости от выбранной кодировки, о чем мы поговорим позже. По этой причине в среде разработчиков принято всегда использовать \n
без \r
.
В таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование \n
.
Напишите программу, которая выводит на экран:
- Did Joffrey agree?
- He did. He also said "I love using \n".
При этом программа использует только один print()
, но результат на экране должен выглядеть в точности, как показано выше.
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Обязательно поэкспериментируйте с выводом разных строк на сайте https://replit.com/languages/python3
Экранированная последовательность — специальная комбинация символов в тексте. Например, \n — это перевод строки.