Циклы в Python
Практически любой язык программирования содержит вложенные конструкции цикла, причём в большинстве случаев таких конструкций несколько.
Python — не исключение. В списке техдокументации для Python есть 2 типа циклов: - цикл while, - цикл for.
Циклы необходимы, если нам надо что-либо сделать множество раз, реализовать последовательность одинаковых действий. Речь идёт о выполнении какой-нибудь операции либо списков операций снова и снова. Циклы максимально упрощают этот процесс. Если говорить о вышеназванных циклах, то цикл for многие считают более популярным. С него и начнём.
Цикл for в Python
Как было сказано выше, использование цикла целесообразно, если нужно повторить действие n-ное количество раз, выполнить некую последовательность одних и тех же операций. Рассмотрим это на примере. Возьмём встроенную в Python 3 функцию
print(range(5)) # ответ: range(0, 5)
Как видим, функция в Python взяла целое число, а вернула объект
a = range(5, 10) print(a) # range(5, 10) b = list(range(1, 10, 2)) print(b) # [1, 3, 5, 7, 9]
В первом примере мы передаём начальное и конечное значение, при этом
Во 2-м случае используем функцию списка (list). В результате возвращается каждый 2-й элемент между 1-10 (наша последовательность будет равна 1, 3 и т. п., разумеется, также в прямом, а не обратном порядке).
Закономерный вопрос: а что функция
for number in range(5): print(number)
Что в данном случае произошло? Чтобы понять это, расшифруем наш код:
1. Мы вводим число для каждого числа в диапазоне 5.
2. Мы знаем, что при вызове
Вышеупомянутый цикл for м. б. эквивалентом следующего:
for number in [0, 1, 2, 3, 4]: print(number)
Здесь
Что ещё «умеет» цикл for?
Цикл for способен обходить любой итератор Python. Мы видели особенности действия цикла при обработке списка и последовательности. А теперь взглянем, можно ли его использовать для выполнения итерации со словарём:
a_dict = {"one":1, "two":2, "three":3} for key in a_dict: print(key)
Если использовать for в словаре, легко заметить, что он перебирает ключи автоматически. К примеру, не нужно указывать for в
a_dict = {1:"one", 2:"two", 3:"three"} keys = a_dict.keys() keys = sorted(keys) for key in keys: print(key)
Результат использования данного цикла for в Python следующий:
1 2 3
Давайте разберём код данного цикла for подробнее. Во-первых, был создан словарь, где ключи выступают вместо строк в качестве целых чисел. Во-вторых, мы извлекли из словаря ключи. Каждый раз при вызове метода
Итак, получен доступ к ключам, хранимым в keys. Мы сортируем список, после чего нужно использовать цикл for в нём. Чтобы сделать процесс интереснее, попробуем использовать цикл for в функции
for number in range(10): if number % 2 == 0: print(number)
Результат работы цикла for таков:
0 2 4 6 8
Возможно, не все поняли, что происходит и откуда в цикле знак процента. Если кто подзабыл, в Python, % — это оператор модуля. Когда его используют, возвращается остаток. При делении целого числа на 2, остатка, разумеется, нет.
После разговора о цикле for пришла пора познакомиться с циклом while.
Цикл while
Цикл while хорошо использовать для повторений частей кода. Здесь вместо зацикливания n-е количество раз цикл будет работать, пока не исполнится определённое условие.
Пример работы цикла while в Python:
i = 0 while i < 10: print(i) i = i + 1
Цикл while по сути — это один из вложенных условных операторов. Если говорить о коде цикла, который мы решили использовать выше, на экран будет выводиться переменная i до тех пор, пока она меньше десяти. То есть с запуском этого кода в Python вы получите список от 0 до 9, сформированный в прямом, а не обратном порядке, причём каждая цифра выведется в отдельной строке, и цикл завершится.
Однако, удалив часть кода с увеличением значения i, мы получим бесконечный цикл, а это уже плохо. Бесконечные циклы называют логическими ошибками, которых лучше избегать. Но это не значит, что в таком случае нельзя будет «вырваться» из цикла. Можно, если использовать вложенные функции в Python, например,
while i < 10: print(i) if i == 5: break i += 1
Узнать больше про Python-циклы вы всегда сможете на наших курсах. Изучайте циклы, списки, функции, классы и другие нюансы «Пайтона» вместе с OTUS!