Найти тему
Langis программист

Цикл for

Циклы типа «for», в отличие от «while», повторяются не в зависимости от выполнения условия, а для каждого элемента в списке, множества, кортежа или другой совокупности элементов. Другими словами, для каждой итерации цикла используется один из элементов совокупности. К примеру, чтобы проверить пригодность продуктов питания в магазине, человек должен по очереди взять каждый продукт из своей корзины и убедиться, что срок годности еще не истек. Так, корзина с продуктами выступает в качестве совокупности элементов, продукты являются самими элементами, а проверка срока годности одного продукта — итерацией цикла. В качестве совокупности элементов может выступать строка, поскольку она является совокупностью символов. Для примера попробуем вывести все элементы строки отдельно:

Результат работы нашего кода в консоли:

-2

Цикл может пройти по строке частично. Для этого необходимо её разделить при помощи оператора среза «[::]». «line[start, stop, step]» возвращает все элементы строки «line» от «start» (включая) до «stop» (не включая). Шаг определяет, как на сколько будет увеличиваться индекс. Другими словами, шаг указывает на то, какой символ строки будет принят за следующий. Значение «start» по умолчанию — 0, «step» — 1, «stop» по умолчанию соответствует индексу последнего элемента строки. Детальнее этот оператор будет рассмотрен в следующих модулях, поэтому остановимся на тех его свойствах, что понадобятся нам для демонстрации работ. Ниже приведен пример кода, который выполняет итерацию по первым шести буквам строки:

-3

Результат работы нашего кода в консоли:

-4

Здесь в «[0 : 6 : 1]» 0 обозначает, что срез начинается с начала строки, 6 обозначает, что индекс последнего элемента в срезе не превышает 6 (в нашем случае 6-й символ — первая «s»), а 1 обозначает, что символы в срез будут добавляться слева направо без пропусков. 0 и 1 в примере выше — значения, которые используются оператором по умолчанию, поэтому в дальнейшем значения по умолчанию будут пропущены. Изменяя значение шага, можно вывести все символы, которые находятся на четных позициях:

-5

Результат работы нашего кода в консоли:

-6

Здесь «[ : : 2]» означает, что в срезе будет пропущен каждый второй символ начальной строки. Кроме того, если в качестве шага использовать отрицательное значение, перебор будет происходить в обратную сторону:

-7

Результат работы нашего кода в консоли:

-8

Так «[ : : -1]» означает, что строка будет инвертирована: её конец станет началом, а начало — концом.