Skip to content

Commit 91e1ec0

Browse files
committed
update
Signed-off-by: Kirill Mokevnin <[email protected]>
1 parent 688b806 commit 91e1ec0

File tree

8 files changed

+220
-128
lines changed

8 files changed

+220
-128
lines changed

modules/31-advanced-strings/25-interpolation/ru/EXERCISE.md

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Выведите на экран строку `Do you want to eat, <name>?`. Где вместо `<name>` должна использоваться переменная `stark`. Вывод должен получиться таким:
32

43
<pre class='hexlet-basics-output'>
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
2-
Вы уже знаете, как перенести строку или «слепить» несколько строк, чтобы получить новое выражение. Но в программировании есть альтернативы этих операций. Они повышают читаемость кода и делают его проще в поддержке.
3-
4-
Базовый способ соединения строк — **конкатенация**. С помощью конкатенации строки «суммируются» друг с другом, как в примере ниже:
1+
Конкатенация работает просто и понятно: строки складываются с помощью +.
52

63
```python
74
first_name = 'Joffrey'
@@ -11,7 +8,11 @@ print(greeting + ", " + first_name + "!")
118
# => Hello, Joffrey!
129
```
1310

14-
Конкатенация работает просто, но выглядит не всегда наглядно. Из-за кавычек сложно разглядеть то, каким будет конечный результат. И чем сложнее устроена строка, тем запутаннее она начнет выглядеть. У конкатенации есть альтернатива — **интерполяция**. Вот как это выглядит:
11+
Но при этом в сложных выражениях становится трудно сразу увидеть, какой текст получится на выходе. Особенно если в строке используются пробелы, запятые или кавычки — они начинают мешать восприятию.
12+
13+
## 💡 Альтернатива — интерполяция
14+
15+
Интерполяция — это способ встраивать значения переменных прямо внутрь строки. В Python для этого используются f-строки (или format-строки). Вот так:
1516

1617
```python
1718
first_name = 'Joffrey'
@@ -21,9 +22,9 @@ print(f'{greeting}, {first_name}!')
2122
# => Hello, Joffrey!
2223
```
2324

24-
Буква `f` указывает на то, что мы создаем **f-строку** — шаблон, в который с помощью фигурных скобок подставляются значения переменных. На выходе получается обычная строка.
25+
Буква f перед кавычками указывает, что внутри строки можно использовать переменные. Их имена записываются в фигурных скобках, и Python автоматически подставляет нужные значения.
2526

26-
Рассмотрим такой пример:
27+
## 🔍 Пример
2728

2829
```python
2930
school = 'Hexlet'
@@ -32,8 +33,12 @@ what_is_it = f'{school} - online courses'
3233
print(what_is_it) # => Hexlet - online courses
3334
```
3435

35-
https://replit.com/@hexlet/python-basics-advanced-strings-interpolation
36+
Такая запись легко читается: пробелы, дефисы, символы — всё видно сразу. Строка выглядит именно так, как она появится в выводе. Это делает код понятным и удобным в поддержке.
37+
38+
## 📌 Почему это важно
3639

37-
Почти во всех языках для объединения строк интерполяция предпочтительнее конкатенации. Строка при этом получается склеенная, и внутри нее хорошо просматриваются пробелы и другие символы.
40+
Интерполяция предпочтительнее конкатенации почти во всех современных языках программирования. Она:
3841

39-
Интерполяция помогает сделать код более понятным для разработчиков. Но это не единственная полезная альтернатива, о которой мы хотели рассказать. Далее в курсе мы разберемся, как объявлять многострочную строку и не использовать `\n`.
42+
- Упрощает структуру строк.
43+
- Улучшает читаемость кода.
44+
- Снижает количество ошибок при работе с пробелами и знаками препинания.
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
21
Выведите на экран последний символ строки, находящейся в переменной `name`
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,88 @@
1+
Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя и нужно вывести их в сокращённом формате — A. Ivanov. Для этого потребуется взять первую букву имени.
12

2-
Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя, и в какой-то момент требуется вывести эту информацию в формате *A. Ivanov*. Для этого компьютеру потребуется взять первый символ из имени. В Python есть подходящая операция, которую мы изучим сегодня.
3+
В Python для таких задач есть специальный механизм — индексация.
34

4-
Представим, что из имени Alexander нужно вывести на экран только первую букву. Это выглядит так:
5+
## 🔢 Индексация: как это работает
56

6-
```python
7+
Представим, что у нас есть строка:
8+
9+
```Python
710
first_name = 'Alexander'
11+
```
812

13+
Чтобы получить первую букву, указываем её позицию (индекс) в квадратных скобках:
14+
15+
```Python
916
print(first_name[0]) # => A
1017
```
1118

12-
Операция с квадратными скобками с цифрой извлекает элемент по **индексу** — позицией символа внутри строки. Индексы начинаются с 0 почти во всех языках программирования. Поэтому, чтобы получить первый символ, нужно указать индекс `0`. Индекс последнего элемента равен длине строки минус единица. Обращение к индексу за пределами строки приведет к ошибке:
19+
Индексы в Python (и во многих языках) начинаются с нуля:
1320

14-
```python
15-
# Длина строки 9, поэтому последний индекс — это 8
16-
first_name = 'Alexander'
21+
```
22+
Символ A l e x a n d e r
23+
Индекс 0 1 2 3 4 5 6 7 8
24+
```
1725

18-
print(first_name[8]) # => r
26+
Чтобы получить, например, последний символ, можно написать:
1927

20-
print(first_name[9])
21-
IndexError: string index out of range
28+
```Python
29+
print(first_name[8]) # => r
2230
```
2331

24-
Чтобы лучше закрепить новые знания, посмотрите на код ниже и подумайте, что он выдаст:
32+
А если выйти за границы строки:
2533

26-
```python
27-
magic = '\nyou'
28-
print(magic[1]) # => ?
34+
```Python
35+
print(first_name[9])
2936
```
3037

31-
Бывают и нестандартные ситуации. Например, нужно вывести элемент из конца, причем из выражения с большим количеством символов. В этом случае можно воспользоваться отрицательным индексом, который облегчит работу программиста.
38+
IndexError: string index out of range
3239

33-
Допустимо использовать отрицательные индексы. В этом случае идет обращение к символам, начиная с конца строки. `-1` — индекс последнего символа, `-2` — предпоследнего и так далее. В отличие от прямой индексации, обратный отсчет идет от `-1`:
40+
## 📍 Укороченное извлечение с конца
3441

35-
```python
36-
first_name = 'Alexander'
42+
Часто нужно получить последний символ строки, но заранее неизвестна её длина. В этом случае можно использовать отрицательные индексы:
3743

44+
```Python
3845
print(first_name[-1]) # => r
46+
print(first_name[-2]) # => e
3947
```
4048

41-
Индексом может быть не только конкретное число, но и значение переменной. Посмотрите на пример ниже. Здесь мы записали индекс внутри квадратных скобок не числом, а переменной. Такой код приведет к тому же результату — выводу на экран символа *A*:
4249

43-
```python
44-
first_name = 'Alexander'
45-
index = 0
50+
Отрицательные индексы работают так:
51+
52+
- -1 — последний символ
53+
- -2 — предпоследний
54+
- и так далее
55+
56+
Это удобно, когда не хочется считать длину строки вручную.
57+
58+
🧠 Индекс — это не только число
4659

60+
Индекс можно хранить в переменной, а не записывать прямо:
61+
62+
```Python
63+
index = 0
4764
print(first_name[index]) # => A
4865
```
4966

50-
https://replit.com/@hexlet/python-basics-advanced-strings-symbols
67+
Такой подход полезен, когда индекс вычисляется где-то в коде, а потом используется для доступа к нужному символу.
68+
69+
## 💡 Подумайте: что выведет этот код?
70+
71+
```Python
72+
magic = '\nyou'
73+
print(magic[1]) # => ?
74+
```
75+
76+
В строке '\nyou' первый символ — это \n (перенос строки), а под индексом 1 — буква y.
77+
Вывод будет:
78+
79+
```
80+
y
81+
```
82+
83+
🔁 Закрепим
5184

52-
Чтобы выводить из выражения лишь некоторые символы, не нужно писать большое количество строк кода — достаточно извлечь элемент с помощью индекса. Также можно пользоваться отрицательным индексом, чтобы легче выводить символы с конца выражения. Далее разберемся, как с помощью этих знаний можно извлекать подстроки из строки.
85+
- Строки можно индексировать — получать символы по номеру.
86+
- Отсчёт с начала идёт с 0, с конца — с -1.
87+
- Можно использовать как числа, так и переменные в качестве индексов.
88+
- Если индекс выходит за пределы строки — будет ошибка.
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
21
В переменной `value` лежит значение `Hexlet`. Извлеките из него и выведите на экран срез, который получит подстроку `xle`. Это задание можно сделать разными способами.

0 commit comments

Comments
 (0)