Skip to content

Commit

Permalink
add fir in range lesson
Browse files Browse the repository at this point in the history
  • Loading branch information
fey committed Jan 9, 2024
1 parent e02d305 commit 7d355df
Show file tree
Hide file tree
Showing 12 changed files with 197 additions and 2 deletions.
1 change: 1 addition & 0 deletions .github/workflows/Docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ jobs:
with:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*.ru
__pycache__
.mypy_cache
.DS_Store
.ropeproject
text_length.txt
2 changes: 1 addition & 1 deletion .yamllint
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ extends: default
rules:
line-length: disable
empty-lines: disable
trailing-spaces: disable
trailing-spaces: disable
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ compose-code-lint:
docker compose run exercises make code-lint

code-lint:
flake8 modules
flake8 modules
1 change: 1 addition & 0 deletions description.ru.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ keywords:
- пайтон
- питон
- онлайн курс
- бесплатный курс
- программирование
- code basics
- online course
Expand Down
2 changes: 2 additions & 0 deletions modules/50-loops/80-for-in-range/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
test:
@ test.sh
85 changes: 85 additions & 0 deletions modules/50-loops/80-for-in-range/description.ru.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---

name: Цикл for и функция range
theory: |
Представьте, что у нас есть ряд чисел от 0 до 9. Мы хотим сложить эти числа. Мы могли бы сделать это так:
```python
sum = 0
i = 0
while i < 10:
sum += i
i += 1
print(sum) # => 45
```
Сначала мы устанавливаем начальную сумму 0. Далее запускается цикл, в котором переменная `i` начинает принимать значения начиная с 0 и доходя до 10. На каждом шаге мы прибавляем значение `i` к нашей сумме и увеличиваем `i` на 1. Как только `i` становится равным 10, цикл заканчивается и программа выдаёт нам сумму всех чисел от 0 до 9 равную 45.
Такой код мы можем переписать на цикл `for`
```python
sum = 0
for i in range(10):
sum += i
print(sum) # => 45
```
Первый пример использует `while`, который продолжает работать пока `i < 10`. Второй использует `for` и выполняет итерацию от 0 до 9 с помощью функции `range()`. Оба выполняют одно и то же: складывают числа от 0 до 9 в переменную `sum`, но используют разные способы выполнения итераций.
## Функция `range()`
Функция range в Python является встроенной функцией, которая создает последовательность чисел внутри определенного диапазона. Ее можно использовать в цикле for для контроля количества итераций.
У `range()` есть несколько вариантов использования:
* `range(stop)` создает последовательность от 0 до `stop - 1`
* `range(start, stop)` создает последовательность от start до `stop - 1`
* `range(start, stop, step)` создает последовательность из чисел от start до `stop - 1`, с шагом `step`
Пример с одним конечным значением мы рассмотрели выше. Рассмотрим другой - распечатаем на экран числа от 1 до 3:
```python
for i in range(1, 4):
print(i)
# => 1
# => 2
# => 3
```
Теперь попробуем вывести числа в обратном порядке
```python
for i in range(3, 0, -1):
print(i)
# => 3
# => 2
# => 1
```
На примерах выше мы видим, что итерация завершается до конечного значения
instructions: |
Реализуйте функцию `print_table_of_squares(from, to)`, которая считает квадраты чисел от `from` до `to` и печатает на экран строки `square of <число> is <результат>`
Примеры вызова:
```python
print_table_of_squares(1, 3)
# => square of 1 is 1
# => square of 2 is 4
# => square of 3 is 9
```
tips: []

definitions: []
4 changes: 4 additions & 0 deletions modules/50-loops/80-for-in-range/index.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
def print_table_of_squares(first, last):
for i in range(first, last + 1):
square = i * i
print(f"square of {i} is {square}")
11 changes: 11 additions & 0 deletions modules/50-loops/80-for-in-range/ru/EXERCISE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

Реализуйте функцию `print_table_of_squares(from, to)`, которая печатает на экран квадраты чисел. Она первое `from` и последнее `to` число печатает строку `square of <число> is <результат>`

Примеры вызова:

```python
print_table_of_squares(1, 3)
# => square of 1 is 1
# => square of 2 is 4
# => square of 3 is 9
```
64 changes: 64 additions & 0 deletions modules/50-loops/80-for-in-range/ru/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@

Представьте, что у нас есть ряд чисел от 0 до 9. Мы хотим сложить эти числа. Мы могли бы сделать это так:

```python
sum = 0
i = 0

while i < 10:
sum += i
i += 1

print(sum) # => 45
```

Сначала мы устанавливаем начальную сумму 0. Далее запускается цикл, в котором переменная `i` начинает принимать значения начиная с 0 и доходя до 10. На каждом шаге мы прибавляем значение `i` к нашей сумме и увеличиваем `i` на 1. Как только `i` становится равным 10, цикл заканчивается и программа выдаёт нам сумму всех чисел от 0 до 9 равную 45.

Такой код мы можем переписать на цикл `for`

```python
sum = 0

for i in range(10):
sum += i

print(sum) # => 45
```

Первый пример использует `while`, который продолжает работать пока `i < 10`. Второй использует `for` и выполняет итерацию от 0 до 9 с помощью функции `range()`. Оба выполняют одно и то же: складывают числа от 0 до 9 в переменную `sum`, но используют разные способы выполнения итераций.


## Функция `range()`

Функция range в Python является встроенной функцией, которая создает последовательность чисел внутри определенного диапазона. Ее можно использовать в цикле for для контроля количества итераций.

У `range()` есть несколько вариантов использования:

* `range(stop)` создает последовательность от 0 до `stop - 1`
* `range(start, stop)` создает последовательность от start до `stop - 1`
* `range(start, stop, step)` создает последовательность из чисел от start до `stop - 1`, с шагом `step`

Пример с одним конечным значением мы рассмотрели выше. Рассмотрим другой - распечатаем на экран числа от 1 до 3:

```python

for i in range(1, 4):
print(i)

# => 1
# => 2
# => 3
```

Теперь попробуем вывести числа в обратном порядке

```python
for i in range(3, 0, -1):
print(i)

# => 3
# => 2
# => 1
```

На примерах выше мы видим, что итерация завершается до конечного значения
3 changes: 3 additions & 0 deletions modules/50-loops/80-for-in-range/ru/data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: Цикл for и функция range
tips: []
definitions: []
18 changes: 18 additions & 0 deletions modules/50-loops/80-for-in-range/test_code.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from index import print_table_of_squares
from hexlet.test import expect_output


def test(capsys):
expected = '''square of 1 is 1
square of 2 is 4
square of 3 is 9
square of 4 is 16
square of 5 is 25
square of 6 is 36
square of 7 is 49
square of 8 is 64
square of 9 is 81
square of 10 is 100'''

print_table_of_squares(1, 10)
expect_output(capsys, expected)

0 comments on commit 7d355df

Please sign in to comment.