Module (25%)
Section (24%)

Зацикливание кода с помощью for

Другой вид цикла, доступный в Python, основан на наблюдении, что иногда важнее подсчитать "обороты" цикла, чем проверять условия.

Представьте, что тело цикла нужно выполнить ровно сто раз. Если вы хотите использовать для этого цикл while, он может выглядеть следующим образом:

i = 0 while i < 100: # do_something() i += 1

Было бы здорово, если бы кто-нибудь мог сделать за вас этот скучный подсчет. Это возможно?

Конечно, для такого рода задач существует специальный цикл, который называется for.

На самом деле цикл for предназначен для выполнения более сложных задач - он может "просматривать" большие коллекции данных, элемент за элементом. Мы скоро покажем вам, как это сделать, а сейчас представим более простой вариант его применения.


Взгляните на фрагмент:

for i in range(100): # do_something() pass

Есть несколько новых элементов. Расскажем о них:

  • ключевое слово for открывает цикл for; примечание - после него нет условия; вам не нужно думать об условиях, поскольку они проверяются изнутри, без какого-либо вмешательства;
  • любая переменная после ключевого слова for является управляющей переменной цикла; он считает итерации цикла и делает это автоматически;
  • ключевое слово in вводит элемент синтаксиса, описывающий диапазон возможных значений, присваиваемых управляющей переменной;
  • функция range() (это особая функция) отвечает за генерацию всех желаемых значений управляющей переменной; в нашем примере функция будет создавать (мы даже можем сказать, что она будет кормить цикл) последующими значениями из следующего набора: 0, 1, 2 .. 97, 98, 99; примечание: в этом случае функция range() начинает свою работу с 0 и заканчивает ее за один шаг (одно целое число) до значения своего аргумента;
  • обратите внимание на ключевое слово pass внутри тела цикла - оно вообще ничего не делает; это пустая инструкция - мы поместили ее сюда, потому что синтаксис цикла for требует как минимум одной инструкции внутри тела (кстати - if, elif, else и while выражают одно и то же)

Наши следующие примеры будут немного скромнее по количеству повторений цикла.



Взгляните на приведенный ниже фрагмент кода. Можете ли вы предсказать его вывод?

for i in range(10): print("The value of i is currently", i)

Запустите код, чтобы проверить, были ли вы правы.

Примечание:

  • цикл был выполнен десять раз (это аргумент функции range())
  • значение последней управляющей переменной - 9 (не 10, так как оно начинается с 0, а не с 1)

Вызов функции range() может иметь два аргумента, а не только один:

for i in range(2, 8): print("The value of i is currently", i)

В этом случае первый аргумент определяет начальное (первое) значение управляющей переменной.

Последний аргумент показывает первое значение, которое не будет присвоено управляющей переменной.

Примечание: функция range() принимает только целые числа в качестве аргументов и генерирует последовательности целых чисел.

Вы можете угадать результат работы программы? Запустите ее, чтобы проверить, были ли вы сейчас правы.

Первое показанное значение - 2 (взято из первого аргумента range()).

Последний - 7 (хотя второй аргумент range() - 8).