Python: Экранированные последовательности

Допустим, мы хотим вывести диалог:

- Are you hungry?
- Aaaarrrgh!

Попробуем записать его как одну строку:

print("- Are you hungry?- Aaaarrrgh!")
# => - Are you hungry?- Aaaarrrgh!

Получилось не то что нужно: обе реплики слились в одну строку. Чтобы каждая из них начиналась с новой строки, нужно указать Python'у сделать перевод строки — то есть «нажать Enter».

Для этого используется специальный управляющий символ \n:

print("- Are you hungry?\n- Aaaarrrgh!")

Результат:

- Are you hungry?
- Aaaarrrgh!

Что такое \n?

Символ \n — это экранированная последовательность, или управляющий символ. Он обозначает перевод строки, но не отображается напрямую. Вы не увидите \n в выводе программы — он влияет только на расположение текста.

В текстовых редакторах при нажатии Enter добавляется невидимый символ — LF (Line Feed). Именно его и означает \n. Иногда такие символы можно увидеть, если включить отображение спецсимволов:

- Привет!¶
- О, привет!¶
- Как дела?

Принтеры, редакторы и интерпретаторы Python понимают \n как команду начать строку с новой строки.

Другие управляющие символы

Кроме \n, в Python есть и другие специальные последовательности:

  • \t — табуляция (эквивалент клавиши Tab)
  • \r — возврат каретки (используется в Windows, но редко применяется в Python-коде)
  • В программировании чаще всего используют именно \n — его достаточно для большинства задач.

Примеры использования \n

print("Gregor Clegane\nDunsen\nPolliver\nChiswyck")

Результат:

Gregor Clegane
Dunsen
Polliver
Chiswyck

Вы также можете вставлять \n в любую часть строки — до, после или даже использовать его отдельно:

print("First line")
print("\n")         # Просто пустая строка
print("Second line")

Результат:

First line

Second line

Важные детали

  • '\n' — один символ, несмотря на то, что в коде он записан как два (\ и n).

  • Если вы хотите вывести символы \n буквально (как текст), используйте двойной обратный слэш \\n:

    print("Joffrey loves using \\n")
    # => Joffrey loves using \n
    
  • На Windows по умолчанию используется комбинация \r\n, но в Python (и вообще в кроссплатформенной разработке) принято использовать только \n, чтобы избежать проблем при переносе кода между системами.

Задание

Напишите программу, которая выводит на экран:

- Did Joffrey agree?
- He did. He also said "I love using \n".

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

Полезное

Определения

Экранированная последовательность
специальная комбинация символов в тексте. Например, \n — это перевод строки.
Как с вами связаться? 🙃

Команда проекта находится в телеграм-сообществе по ссылке https://ttttt.me/HexletLearningBot. Там можно задать любой вопрос и повлиять на проект

Упражнение не проходит проверку — что делать? 😶

Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "Обсуждение". Как правильно задать вопрос:

В моей среде код работает, а здесь нет 🤨

Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

Мой код отличается от решения учителя 🤔

Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

Прочитал урок — ничего не понятно 🙄

Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются

Привет! Я Тота и моя задача помочь в обучении. Чтобы активировать меня, нужно зарегистрироваться или залогиниться, если у вас уже есть аккаунт

Loading...

Ваше упражнение проверяется по этим тестам

1from hexlet.test import expect_output
2
3
4def test(capsys):
5    expected = '- Did Joffrey agree?\n- He did. He also said "I love using \\n".'  # noqa: E501
6    expect_output(capsys, expected)
7

Решение учителя откроется через:

20:00
waiting_clock