Циклы
Циклы позволяют выполнить некоторый блок инструкций несколько раз в зависимости от условия. Для циклов Python имеет всего две встроенные комманды:
while
for
Внутри циклов могут использованы следующие специальные команды:
break
- прервать текущую итерацию и выйти из цикла;continue
- прервать текущую итерацию и перейти к следующей.
Цикл while
Цикл while
проверяет истинность условия, если оно верно, то блок инструкций будет исполнен, иначе происходит выход из цикла. Условное выражение, как и в остальных блоках в языке Python, оканчивается символом :
.
Синтаксис для while
:
while <условие>:
<инструкция 1>
...
<инструкция N>
<инструкция M> # не входит в цикл, т.к. отступ вернулся на предыдущий уровень
Разберём следующий пример. Допустим, надо вывести числа от нуля до пяти в терминал:
n = 0
while n <= 5:
print(n)
n += 1
Вывод:
0
1
2
3
4
5
Цикл проверяет условие n <= 5
, если оно выполняется - выводит в терминал текущее значение n
, а потом увеличивает значение переменной n
на единицу. В данном примере выполняется шесть итераций, после чего цикл заканчивается.
Использование break
Текущая итерация, а также выход из самого цикла, может быть осуществлен с помощью специальной команды break
. Переделаем предыдущий пример так, чтобы числа были выведены от нуля до трёх:
n = 0
while n <= 5:
print(n)
if n == 3:
break
n += 1
Вывод:
0
1
2
3
Использование continue
Текущая итерация также может быть прервана с помощью команды continue
, но без выхода из цикла, а с переходом на следующую итерацию. Сейчас выведем числа от нуля до пяти, исключая три и четыре:
n = 0
while n <= 5:
if n == 3 or n == 4:
n += 1
continue
else:
print(n)
n += 1
Вывод:
0
1
2
5
Использование else
С помощью else
можно выполнить блок инструкций после успешного завершения цикла. Если цикл был прерван с помощью break
- блок else
не будет выполнен.
Пример 1:
n = 0
while n <= 3:
print(n)
n += 1
else:
print("Цикл успешно завершился!")
0
1
2
3
Цикл успешно завершился!
Пример 2:
n = 0
while n <= 3:
print(n)
if n == 2:
break
n += 1
else:
print("Цикл успешно завершился!")
0
1
2
Во втором примере при n
равном двум у нас вызывается прерывание цикла и выход из него, из-за чего блок else
не был исполнен.
Цикл for
Цикл for
используется для перебора значений в последовательности. В целом это может быть любой итерируемый объект - список, кортеж, словарь, множество, строка (т.к. является набором символов) и др. На каждой итерации исполняется набор инструкций единожды для каждого элемента итерируемого объекта.
Синтаксис для for
:
for <переменная> in <итерируемый объект>:
<инструкция 1>
...
<инструкция N>
<инструкция M> # не входит в цикл
Пример:
numbers = [5, 9, 22, 3]
for num in numbers:
print(num)
5
9
22
3
На каждой итерации переменной num
присваивается следующий элемент из списка numbers
, значение которого потом выводится в терминал. Когда элементы в списке заканчиваются - происходит выход из цикла.
Пример 2:
for s in "cat":
print(s)
c
a
t
Использование break
Использование команды break
для цикла for
ничем не отличается от while
:
for animal in ["dog", "cat", "parrot"]:
if animal == "cat":
break
print(animal)
dog
Использование continue
Аналогично циклу while
, в цикле for
можно прервать текущую итерацию и перейти к следующей с помощью continue
:
for animal in ["dog", "cat", "parrot"]:
if animal == "cat":
continue
print(animal)
dog
parrot
Использование else
С помощью else
можно выполнить блок инструкций после успешного завершения цикла. Если цикл был прерван с помощью break
- блок else
не будет выполнен.
Пример:
for n in range(3):
print(n)
else:
print("Цикл успешно завершился!")
0
1
2
Цикл успешно завершился!
Использование range()
Цикл for
обычно чаще применяется в случаях, когда набор инструкций надо выполнить несколько раз, нежели цикл while
. Для удобства используется тип данных range
, который позволяет задать последовательность из чисел от нуля (по умолчанию) до какого либо значения:
for n in range(5):
print(n)
0
1
2
3
4
Предупреждение
При использовании типа данных
range
в качестве итерируемого объекта в цикле важно помнить, что последнее число, обозначающее конечный шаг вrange
, не включается в последовательность элементов при итерации.
Пример 2:
for n in range(2, 10, 5):
print(n)
2
7
В данном примере мы итерируем объект range
от 2 до 10 с шагом 5.