generated from hexlet-basics/exercises-template
-
Notifications
You must be signed in to change notification settings - Fork 3
/
description.ru.yml
111 lines (74 loc) · 6.77 KB
/
description.ru.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
---
name: Экранированные последовательности
theory: |
Мы хотим показать вот такой диалог:
```
- Are you hungry?
- Aaaarrrgh!
```
Попробуем вывести на экран строку с таким текстом:
```python
print("- Are you hungry?- Aaaarrrgh!")
# => - Are you hungry?- Aaaarrrgh!
```
Как видите, результат получился не такой, как мы хотели. Строки расположились друг за другом, а не одна ниже другой. Нам нужно как-то сказать интерпретатору «нажать на Enter» — сделать перевод строки после вопросительного знака. Это можно сделать с помощью символа `\n`:
```python
print("- Are you hungry?\n- Aaaarrrgh!")
# => - Are you hungry?
# => - Aaaarrrgh!
```
`\n` — это пример **экранированной последовательности** (escape sequence). Такие последовательности еще называют управляющими конструкциями. Их нельзя увидеть в том же виде, в котором их набрали.
Набирая текст в Word, вы нажимаете на Enter в конце строчки. Редактор при этом ставит в конец строчки специальный невидимый символ, который называется LINE FEED (LF, перевод строчки). В некоторых редакторах можно даже включить отображение невидимых символов. Тогда текст будет выглядеть примерно так:
```
- Привет!¶
- О, привет!¶
- Как дела?
```
Устройство, которое выводит соответствующий текст, учитывает этот символ. Например, принтер при встрече с LF протаскивает бумагу вверх на одну строку, а текстовый редактор переносит весь последующий текст ниже, также на одну строку.
Существует несколько десятков таких невидимых символов, но в программировании часто встречаются всего несколько. Кроме перевода строки, к таким символам относятся:
* табуляция `\t` — разрыв, который получается при нажатии на кнопку Tab
* возврат каретки `\r` — работает только в Windows
Распознать такую управляющую конструкцию в тексте можно по символу `\`. Программисты часто используют перевод строки `\n`, чтобы правильно форматировать текст. Например, напишем такой код:
```python
print("Gregor Clegane\nDunsen\nPolliver\nChiswyck")
```
Тогда на экран выведется:
```
Gregor Clegane
Dunsen
Polliver
Chiswyck
```
Когда работаете с символом перевода, учитывайте следующие моменты:
1. Не важно, что стоит перед или после `\n`: символ или пустая строка. Перевод обнаружится и выполнится в любом случае
2. Строка может содержать только `\n`:
```python
print('Gregor Clegane') # Строка с текстом
print("\n") # Строка с невидимым символом перевода строки
print('Dunsen') # Строка с текстом
```
Программа выведет на экран:
```
Gregor Clegane
Dunsen
```
3. В коде последовательность `\n` выглядит как два символа, но с точки зрения интерпретатора — это один специальный символ
4. Если нужно вывести `\n` как текст (два отдельных печатных символа), то можно воспользоваться экранированием — добавить еще один `\` в начале. Последовательность `\\n` отобразится как символы `\` и `n`, которые идут друг за другом:
```python
print("Joffrey loves using \\n")
# => Joffrey loves using \n
```
В Windows для перевода строк по умолчанию используется `\r\n`. Такая комбинация хорошо работает только в Windows, но создает проблемы при переносе в другие системы. Например, когда в команде разработчиков есть пользователи Linux.
Дело в том, что последовательность `\r\n` имеет разную трактовку в зависимости от выбранной кодировки, о чем мы поговорим позже. По этой причине в среде разработчиков принято всегда использовать `\n` без `\r`.
В таком случае перевод строки всегда трактуется одинаково и отлично работает в любой системе. Не забудьте настроить ваш редактор на использование `\n`.
instructions: |
Напишите программу, которая выводит на экран:
- Did Joffrey agree?
- He did. He also said "I love using \n".
При этом программа использует только один `print()`, но результат на экране должен выглядеть в точности, как показано выше.
definitions:
- name: "Экранированная последовательность"
description: "специальная комбинация символов в тексте. Например, \\n — это перевод строки."
tips:
- Обязательно поэкспериментируйте с выводом разных строк на сайте [https://replit.com/languages/python3](https://replit.com/languages/python3)
- "[История перевода строки](https://ru.wikipedia.org/wiki/Перевод_строки#История)"