Skip to content

Commit 41dea2d

Browse files
authored
add for-in-range lesson (#315)
1 parent d539324 commit 41dea2d

File tree

4 files changed

+116
-0
lines changed

4 files changed

+116
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
test:
2+
@ test.sh
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
---
2+
3+
name: Цикл For
4+
theory: |
5+
6+
Представьте, что у нас есть ряд чисел от 0 до 9. Мы хотим сложить эти числа. Мы могли бы сделать это так:
7+
8+
```python
9+
sum = 0
10+
i = 0
11+
12+
while i < 10:
13+
sum += i
14+
i += 1
15+
16+
print(sum) # => 45
17+
```
18+
19+
Сначала мы устанавливаем начальную сумму 0. Далее запускается цикл, в котором переменная `i` начинает принимать значения начиная с 0 и доходя до 10. На каждом шаге мы прибавляем значение `i` к нашей сумме и увеличиваем `i` на 1. Как только `i` становится равным 10, цикл заканчивается и программа выдаёт нам сумму всех чисел от 0 до 9 равную 45.
20+
21+
Такой код мы можем переписать на цикл `for`
22+
23+
```python
24+
sum = 0
25+
26+
for i in range(10):
27+
sum += i
28+
29+
print(sum) # => 45
30+
```
31+
32+
Первый пример использует `while`, который продолжает работать пока `i < 10`. Второй использует `for` и выполняет итерацию от 0 до 9 с помощью функции `range()`. Оба выполняют одно и то же: складывают числа от 0 до 9 в переменную `sum`, но используют разные способы выполнения итераций.
33+
34+
35+
## Функция `range()`
36+
37+
Функция range в Python является встроенной функцией, которая создает последовательность чисел внутри определенного диапазона. Ее можно использовать в цикле for для контроля количества итераций.
38+
39+
У `range()` есть несколько вариантов использования:
40+
41+
* `range(stop)` создает последовательность от 0 до `stop - 1`
42+
* `range(start, stop)` создает последовательность от start до `stop - 1`
43+
* `range(start, stop, step)` создает последовательность из чисел от start до `stop - 1`, с шагом `step`
44+
45+
Пример с одним конечным значением мы рассмотрели выше. Рассмотрим другой - распечатаем на экран числа от 1 до 3:
46+
47+
```python
48+
49+
for i in range(1, 4):
50+
print(i)
51+
52+
# => 1
53+
# => 2
54+
# => 3
55+
```
56+
57+
Теперь попробуем вывести числа в обратном порядке
58+
59+
```python
60+
for i in range(3, 0, -1):
61+
print(i)
62+
63+
# => 3
64+
# => 2
65+
# => 1
66+
```
67+
68+
На примерах выше мы видим, что итерация завершается до конечного значения
69+
70+
instructions: |
71+
72+
Реализуйте функцию `print_table_of_squares()`, которая печатает на экран квадраты чисел. Она первое и последнее числа.
73+
74+
Примеры вызова:
75+
76+
```python
77+
print_table_of_squares(1, 3)
78+
# => square of 1 is 1
79+
# => square of 2 is 4
80+
# => square of 3 is 9
81+
# => square of 4 is 16
82+
# => square of 5 is 25
83+
# => square of 6 is 36
84+
# => square of 7 is 49
85+
# => square of 8 is 64
86+
# => square of 9 is 81
87+
# => square of 10 is 100
88+
```
89+
90+
tips: []
91+
92+
definitions: []
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
def print_table_of_squares(first, last):
2+
for i in range(first, last + 1):
3+
square = i * i
4+
print(f"square of {i} is {square}")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from index import print_table_of_squares
2+
from hexlet.test import expect_output
3+
4+
5+
def test(capsys):
6+
expected = '''square of 1 is 1
7+
square of 2 is 4
8+
square of 3 is 9
9+
square of 4 is 16
10+
square of 5 is 25
11+
square of 6 is 36
12+
square of 7 is 49
13+
square of 8 is 64
14+
square of 9 is 81
15+
square of 10 is 100'''
16+
17+
print_table_of_squares(1, 10)
18+
expect_output(capsys, expected)

0 commit comments

Comments
 (0)