Перейти к содержанию

TODO: сделать проще примеры

Для множественного выполнения каких-то одинаковых действий в Питоне существуют циклы.
Например, для всех команд КХЛ в игровой таблице нам надо выполнить одно действие - напечатать на экране название каждой команды. А команд может быть 20. Чтобы не печатать 20 строк текста, можно составить код цикла for и Питон сам все напечатает.
Цикл for как бы говорит - для элементов в списке xxx: и далее следует команда, что надо сделать. Пока в списке есть необработанные элементы, цикл for не заканчивается. Как только обработан последний элемент, цикл заканчивается и Питон переходит к нижележащему после цикла коду. Таким образом цикл - это циклическая работа Питона по обработке того или иного кода. Но иногда, при ошибочном составлении какого-либо цикла, работа Питона зацикливается, и программа зависает навсегда.
Также не забываем, что в строке, где прописываем начало цикла for, в конце мы ставим двоеточие, и все последующие ниже строки в составе цикла мы начинаем с отступом в 4 пробела. Как цикл заканчивается, так начинаем писать следующий код опять с новой строки.
Теперь разберём как задать параметр цикла. Это делается при помощи range().

Введение в range()

Итак, как работает функция Python под названием range? Простыми словами, range() позволяет вам генерировать ряд чисел в рамках заданного диапазона. В зависимости от того, как много аргументов вы передаете функции, вы можете решить, где этот ряд чисел начнется и закончится, а также насколько велика разница будет между двумя числами.

Вот небольшой пример range() в действии:

for i in range(3, 16, 3):
    quotient = i / 3
    print(i)
    print(“делится на 3, результат”)
    print(quotient)

В этом цикле вы просто можете создать ряд чисел, кратных трем, так что вам не нужно вводить каждое из них лично.

Есть три способа вызова range():
• range(стоп) берет один аргумент
• range(старт, стоп) берет два аргумента
• range(старт, стоп, шаг) берет три аргумента
Вызывая range() с одним аргументом, вы получите ряд чисел, начинающихся с 0 и включающих каждое число до, но не включая число, которое вы обозначили как конечное (стоп).
Как это выглядит на практике:

for i in range(3):
    print(i)

Выдача вашего цикла будет выглядеть так:
0
1
2

Проверим: у нас есть все числа от 0 до, но не включая 3 — числа, которое вы указали как конечное.

range(старт, стоп)

Вызывая range() с двумя аргументами, вам нужно решить не только, где ряд чисел должен остановиться, но и где он должен начаться, так что вам не придется начинать с нуля каждый раз. Вы можете использовать range() для генерации ряда чисел, начиная с А до Б, используя диапазон (А, Б). Давайте узнаем, как генерировать диапазон, начинающийся с 1.
Попробуем вызывать range() с двумя аргументами:

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

Ваша выдача будет выглядеть следующим образом:
1
2
3
4
5
6
7

Отлично: у вас есть все числа от 1 (число, которые вы определили как стартовое), до, но не включая, 8 (число, которые вы определили как конечное).

range(старт, стоп, шаг)

Вызывая range() с тремя аргументами, вы можете выбрать не только то, где ряд чисел начнется и остановится, но также то, на сколько велика будет разница между одним числом и следующим. Если вы не задаете этот «шаг», то range() автоматически будет вести себя так, как если бы шаг был бы равен 1.
Обратите внимание: шаг может быть положительным, или отрицательным числом, но он не может равняться нулю.
Если вы попробуете использовать 0 как шаг, вы получите ошибку ValueError.
Теперь, так как вы знаете, как использовать шаг, вы можете снова использовать цикл, который мы видели ранее, с числами, кратными 3.
Попробуйте лично:

for i in range(3, 16, 3):
    quotient = i / 3
    print(f"{i} делится на 3, результат {int(quotient)}.")

Результат:
3 делится на 3, результат 1.
6 делится на 3, результат 2.
9 делится на 3, результат 3.
12 делится на 3, результат 4.
15 делится на 3, результат 5.

Как вы видите в этом примере, вы можете использовать аргумент шаг для увеличения в сторону больших чисел. Это называется инкрементация.

Инкрементация с range()

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

for i in range(3, 100, 25):
    print(i)

Если ваш шаг равен 25, то выдача вашего цикла будет выглядеть вот так:
3
28
53
78

Вы получили ряд чисел, каждое из которых больше предыдущего на 25, т.е., на заданный вами шаг.
Теперь, так как вы увидели то, как именно вы можете продвигаться вперед по диапазону, настало время узнать, как двигаться в обратную сторону.

Декрементация с range()

Если ваш шаг положительный — то вы двигаетесь по ряду увеличивающихся чисел, это называется инкрементация. Если ваш шаг отрицательный, то вы двигаетесь по ряду убывающих чисел, это называется декрементация. Это позволяет вам идти вспять.
В следующем примере ваш шаг будет -2. Это значит, что декрементация будет равна 2 для каждого цикла:

for i in range(10, -6, -2):
    print(i)

Выдача вашего декременирующего цикла будет выглядеть следующим образом:

10
8
6
4
2
0
-2
-4

У вас есть ряд чисел, каждое из которое меньше предшествующего на 2, т. е., на абсолютное значение предоставленного вами шага.

Перейти к набору задач для практики