Часто возникают ситуации, в которых вам необходимо выполнить блок кода несколько раз. Как правило, команды выполняются одна вслед за другой, но существуют способы зациклить код. Во многих языках программирования для этой цели используются инструкции циклов. В Python существуют следующют два типа цикличных выражений:
* Цикл while
* Цикл for
Инструкция while в Python повторяет указанный блок кода до тех пор, пока указанное в цикле условие будет оставаться истинным.
Цикл while в Python записывается следующим образом:
1 | while условие:
2 | выражение
При этом выражением может быть как одна так и несколько инструкций. Условием может быть любое истинное или ненулевое значение. Выражение будет повторяться, пока условие будет истинным.
Когда условие становится ложным интерпретатор переводит выполнение программы на строку, следующую за циклом. Рассмотрим следующий пример цикла while в Python:
1 | money = 10 # создаем переменную money и присваиваем ей значение 10
2 | while money > 0: # Запускаем цикл
3 | print "We have %s dollars" % money
| # Мы внутри цикла. Печатаем сообщение
4 | money -= 1
| # Все еще внутри цикла. Уменьшаем на один переменную money
5 | print "No more money :( Time to work now"
| # Мы вне цикла. Печатаем сообщение
Запустив код, вы увидите следующий результат:
Цикл while становится бесконечным в случае, когда условие цикла никогда не становится ложным. Примером задачи для реализации которой необходим бесконечный цикл может быть, например, создание программы "Часы", которая бесконечно будет обновлять и отображать время. Однако, часто бесконечный цикл является ошибкой начинающего программиста, который забыл добавить изменение условия цикла. Например:
1 | num = 1
2 | while num < 10:
3 | print "Hello"
Не спешите запускать данный цикл, иначе ваша программа начнет бесконечное выполнение. Чтобы остановить выполнение такого скрипта - в shell нужно нажать Ctrl+C.
Цикл for в Python обладает способностью переберать элементы любого комплексного типа данных (например, строки или списка). В Python цикл for обладает следующим синтаксисом:
1 | for item in sequence:
2 | statement(s)
Переменной item присваивается значение первого элемента sequence, после чего выполняется statement. Затем переменной item присваивается следующее по порядку значение и так далее до тех пор, пока не будут перебраны все элементы sequence. Например:
1 | word = "child" # строка word
2 | bag = ["knife", "wallet", "pen", "notebook"] # список bag
3 | countries = {"Swiss":"Bern", "Ukraine":"Kiev",
4 |
5 | for letter in word:
6 | print letter # печатаем по букве из word
7 |
8 | for item in bag:
9 | print item # печатаем по элементу из bag
10 |
11 | for county in countries:
12 | # По умолчанию цикл for проходит по ключам словарей
13 | # Но нам не составит труда получить значения ключей
14 | print "The capital of %s is %s" % (country, countries[country])
Запустив код выше получим:
Другой способ прохода циклом for по комплексным типам данных является проход по индексам. Как вы помните, любой элемент последовательности можно получить по его индексу. Для генерации списка индексов воспользуемся встроенной функцией range(). Например:
1 | week_days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
2 | for index in range
3 | (len (week_days)): # функция len(sequence) возвращает длину (колчество элементов) в sequence
4 | print week_day[index]
В результате программа напечатает перечень дней недели.
Команда break в Python прекращает выполнение цикла и переводит выполнение программы на строку следующую после цикла.