Step 1 (S-14666)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/3366/step/1


Еще один вид цикла, который активно используется в языке Python, этот цикл for. Цикл for, позволяет делать повторяющиеся действия с последовательностью элементов. В простейшем случае это может выглядеть следующим образом.

S-14666-1.png

В этом примере мы перебираем все элементы последовательности чисел - 2, 3, 5 и выводим квадрат для каждого из них. Разберем из каких элементов состоит конструкция for? Вначале пишем ключевое слово for, за ним следует переменная, которая может принимать значения из некоторой последовательности элементов. Далее следует ключевое слово in и уже за ним мы указываем последовательность элементов (в данном случае мы просто перечислили элементы через запятую) и ставим двоеточие. В теле цикла мы пишем команды, которые будут выполняться для каждого значения из последовательности элементов.

Как это работает?

Сначала i примет значение 2 и будет вычислен и выведен квадрат значения i - число 4. На следующей итерации цикла i станет равной 3 и выведется - 9. И так далее, пока цикл не переберет все значения из последовательности элементов.

Также цикл for очень часто используется совместно с функцией range, которая в простейшем случае принимает один параметр n (целое число) и возвращает последовательность чисел от 0 до n, исключая n.

S-14666-2.png

В приведенном выше примере, это будет последовательность чисел от 0 до 9 включительно. Если мы выполним следующий код:

S-14666-3.png

программа напечатает квадраты чисел от 0 до 9:

Посмотрим, как выглядит функция range в общем случае.

S-14666-6.png

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

Во втором случае функция range принимает на вход два параметра. Они задают интервал в пределах которого будут находится числа возвращаемой последовательности. Первый параметр - число, с которого начинается последовательность, второй - число, верхний предел, достигнув которого итерации прекращаются. Очевидно, что оно не будет входить в последовательность. Таким образом, range(2, 5) вернет последовательность чисел с 2 до 5 с шагом 1, не включая 5.

S-14666-4.png

В последнем случае функция range принимает на вход три параметра. Первые два аргументы аналогичны, описанным во втором случае, а третий аргумент задает шаг с которым будут перебираться элементы последовательности. Например:

range(2, 15, 4)

вернет последовательность - 2, 6, 10, 14.

S-14666-5.png

Для Python это стандартный подход, когда при использовании интервалов левая граница (начальное значение последовательности) включается в интервал, а правая (число, устанавливающее верхнюю границу последовательности) - нет. Это нужно учитывать при определении интервалов, допустим, вам необходимо вывести числа от 0 до 5 включительно, тогда функция range будет выглядеть как range(5 + 1). Другими словами, если мы хотим, чтобы правая граница интервала была включена в результирующую последовательность, при передаче в функцию range ее нужно увеличить на 1.


Тот факт, что функция может иметь несколько параметров, часто записывают таким вот образом:

range(start = 0, to, step = 1)

Здесь заданы три параметра, при чем первый и третий имеют значения по умолчанию равные 0 и 1 соответственно. Второй параметр to не имеет значения по умолчанию, поэтому мы обязаны всегда его передавать в вызов функции.

Рассмотрим пример использования цикла for. Ранее мы уже написали программу, которая выводит треугольник из звездочек, немного изменим условие, пусть теперь программа выводит квадрат из звездочек. Пользователь введет число n - длину стороны квадрата, а программа выводит n строчек, каждая из которых состоит из n звездочек.

S-14666-8.png

Посмотрев на задачу, можно заметить, что нам нужно вывести n одинаковых строк, состоящих из n звездочек.

Как создавать строку из n звездочек мы уже разбирали на предыдущих шагах.

S-14666-7.png

В первой строке мы читаем строку, которую ввел пользователь и преобразуем ее в число. Далее нам нужно n раз повторить вывод строки состоящей из n звездочек. Для этого мы используем цикл for и функцию range с одним параметром (числом n). Такую конструкцию можно использовать в любой ситуации, когда нам нужно повторить какое-либо действие n раз.