Skip to content

Commit fcbe6fa

Browse files
committed
update
Signed-off-by: Kirill Mokevnin <mokevnin@gmail.com>
1 parent 43e6a48 commit fcbe6fa

26 files changed

Lines changed: 61 additions & 310 deletions

File tree

modules/50-loops/10-while/ru/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,4 @@ print_numbers(3)
8787
# => Finished!
8888
```
8989

90-
Цикл `while` управляет печатью чисел. Когда условие перестаёт выполняться (`i` становится больше `n`), выполнение выходит из цикла и продолжается строкой `print("Finished!")`.
90+
Цикл `while` управляет печатью чисел. Когда условие перестаёт выполняться (`i` становится больше `n`), выполнение выходит из цикла и продолжается строкой `print("Finished!")`.

modules/50-loops/20-aggregation-numbers/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Реализуйте функцию `multiply_numbers_from_range()`, которая принимает два числа, границы диапазона, и перемножает числа в нем, включая границы диапазона. Пример вызова:
32

43
```python

modules/50-loops/20-aggregation-numbers/ru/README.md

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1+
Отдельный класс задач, который не обходится без циклов, называется **агрегированием данных**. К таким задачам относятся: поиск максимального или минимального значения, суммы, среднего арифметического. В их случае результат зависит от всего набора данных. В этом уроке разберем, как агрегация применяется к числам и строкам.
12

2-
Отдельный класс задач, который не обходится без циклов, называется **агрегированием данных**. К таким задачам относятся: поиск максимального или минимального значения, суммы, среднего арифметического. В их случае результат зависит от всего набора данных.
3-
4-
Чтобы рассчитать сумму, нужно сложить все числа, а чтобы вычислить максимальное, нужно их сравнить. С такими задачами хорошо знакомы бухгалтеры или маркетологи. Они работают в таблицах Microsoft Excel или Google Tables.
5-
6-
В этом уроке разберем, как агрегация применяется к числам и строкам.
7-
8-
Допустим, нам нужно найти суммы набора чисел. Реализуем функцию, которая складывает числа в указанном диапазоне, включая границы. **Диапазон** — ряд чисел от конкретного начала до определенного конца. Например, диапазон [1, 10] включает целые числа от одного до десяти.
3+
Допустим, нам нужно найти сумму набора чисел. Реализуем функцию, которая складывает числа в указанном диапазоне, включая границы. **Диапазон** — ряд чисел от конкретного начала до определенного конца. Например, диапазон [1, 10] включает целые числа от одного до десяти.
94

105
Пример:
116

@@ -19,9 +14,7 @@ sum_numbers_from_range(1, 1) # 1
1914
sum_numbers_from_range(100, 100) # 100
2015
```
2116

22-
Чтобы реализовать такой код, понадобится цикл, так как сложение чисел — это итеративный процесс, то есть повторяется для каждого числа. Количество итераций зависит от размера диапазона.
23-
24-
Посмотрите код ниже:
17+
Чтобы реализовать такой код, понадобится цикл, так как сложение чисел — это итеративный процесс, то есть повторяется для каждого числа. Количество итераций зависит от размера диапазона. Вот код этой функции:
2518

2619
```python
2720
def sum_numbers_from_range(start, finish):

modules/50-loops/23-aggregation-strings/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Реализуйте функцию `join_numbers_from_range()`, которая объединяет все числа из переданного диапазона в строку:
32

43
```python

modules/50-loops/23-aggregation-strings/ru/README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
21
Агрегация строк — это такие задачи, в которых заранее неизвестно, что содержат строки и какой у них размер.
32

4-
Представьте функцию, которая умеет умножать строку — повторяет ее указанное количество раз:
3+
Представим функцию, которая повторяет строку указанное количество раз. Да, в Python для повтора встроен оператор умножения строки на число, но здесь мы посмотрим как он примерно реализован внутри:
54

65
```python
76
repeat('hexlet', 3) # 'hexlethexlethexlet'
@@ -33,3 +32,16 @@ result = result + 'hexlet' # hexlet
3332
result = result + 'hexlet' # hexlethexlet
3433
result = result + 'hexlet' # hexlethexlethexlet
3534
```
35+
36+
## Нейтральный элемент
37+
38+
Чтобы наращивание работало, нужно стартовое значение. Для строк таким значением является **пустая строка** `''`.
39+
40+
Она называется нейтральным элементом, потому что при конкатенации ничего не меняет:
41+
42+
```python
43+
print('' + 'abc') # => abc
44+
print('abc' + '') # => abc
45+
```
46+
47+
Поэтому именно пустая строка всегда используется как начальное значение при агрегации строк.
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
def print_reversed_word_by_symbol(word):
2-
i = len(word) - 1
3-
while i >= 0:
4-
print(word[i])
5-
i = i - 1
1+
def add_spaces(text):
2+
result = ""
3+
i = 0
4+
while i < len(text):
5+
if i > 0:
6+
result = result + " "
7+
result = result + text[i]
8+
i = i + 1
9+
return result
Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
1+
Напишите функцию `add_spaces(text)`, которая возвращает строку, составленную из символов исходной строки разделенных пробелом.
12

2-
Реализуйте функцию `print_reversed_word_by_symbol()`, которая печатает переданное слово посимвольно, как в примере из теории, но делает это в обратном порядке.
3+
Пример работы:
34

45
```python
5-
word = 'Hexlet'
6-
7-
print_reversed_word_by_symbol(word)
8-
# => 't'
9-
# => 'e'
10-
# => 'l'
11-
# => 'x'
12-
# => 'e'
13-
# => 'H'
6+
print(add_spaces("hex")) # => h e x
7+
print(add_spaces("Arya")) # => A r y a
148
```

modules/50-loops/25-iteration-over-string/ru/README.md

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
С помощью циклов не только обрабатывают числа, но работают и со строками. Например, можно получить конкретный символ по его индексу, а также формировать строки в циклах.
32

43
Ниже пример кода, который печатает буквы каждого слова на отдельной строке:
@@ -21,5 +20,30 @@ print_name_by_symbol(name)
2120
# => 'a'
2221
```
2322

24-
2523
Главное в этом коде — поставить правильное условие в `while`. Это можно сделать двумя способами: `i < len(name)` или `i <= len(name) - 1` — они приведут к одному результату.
24+
25+
## Переворот строки
26+
27+
Вместо печати можно собирать новую строку. Например, напишем функцию, которая переворачивает строку:
28+
29+
```python
30+
def reverse_string(text):
31+
result = ''
32+
i = len(text) - 1
33+
while i >= 0:
34+
result = result + text[i]
35+
i = i - 1
36+
return result
37+
38+
print(reverse_string('Arya')) # => ayrA
39+
print(reverse_string('hexlet')) # => telxeh
40+
```
41+
42+
Здесь:
43+
44+
* переменная `result` инициализируется пустой строкой — нейтральным элементом для конкатенации;
45+
* цикл начинается с последнего индекса (`len(text) - 1`) и двигается к нулю;
46+
* на каждом шаге к результату добавляется текущий символ;
47+
* когда индекс становится меньше нуля, цикл завершается.
48+
49+
В итоге строка строится в обратном порядке.
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import index
2-
from hexlet.test import expect_output
32

43

5-
def test(capsys):
6-
index.print_reversed_word_by_symbol("Hexlet")
7-
expected = "t\ne\nl\nx\ne\nH"
8-
expect_output(capsys, expected)
4+
def test():
5+
assert index.add_spaces("hex") == "h e x"
6+
assert index.add_spaces("Arya") == "A r y a"
7+
assert index.add_spaces("a") == "a"

modules/50-loops/26-conditions-inside-loops/ru/EXERCISE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Функция из теории учитывает регистр букв. То есть `A` и `a` с её точки зрения разные символы. Реализуйте вариант этой же функции, так чтобы регистр букв был не важен:
32

43
```python

0 commit comments

Comments
 (0)