Один символ в записи из двух
В обычном строковом литерале \n обозначает перевод строки. В исходном коде видны обратный слеш и буква n, но после разбора это один управляющий символ. Чтобы сохранить именно два видимых символа, слеш нужно экранировать: \\n.
Задание источника
Выведите одним вызовом print():
Use "\n" to separate lines
Example: print("line1\nline2")
Внутри каждой строки последовательность \n должна остаться буквальным текстом. Настоящий перенос нужен только между двумя предложениями.
Решение
print('Use "\\n" to separate lines\nExample: print("line1\\nline2")')
В двух местах \\ создаёт буквальный обратный слеш, после которого идёт n. Среднее \n без дополнительного слеша создаёт реальный перенос. Внешние одинарные кавычки позволяют оставить двойные кавычки сообщения без экранирования.
Дополнительный перенос print()
Сам print() по умолчанию завершает вывод переводом строки. Поэтому print("\n") выводит два последовательных переноса, а не один. В иллюстрации исходного урока это показано неточно; здесь различие отмечено явно.
Если в конце текста уже есть \n, вызов print() добавит ещё один перевод строки. Для точного вывода нужно учитывать и содержимое аргумента, и завершающий символ функции.
Как отлаживать
Разделите вопрос на два слоя: какие символы записаны в файле программы и какие символы должны оказаться в результирующей строке. Лишний слеш оставит управляющую последовательность видимой, недостающий превратит её в действие форматирования.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Решение сохранено; число переносов уточнено.