Важным достоинством компьютеров является то, что они могут делать одни и те же вещи снова и снова и при этом не жалуются на зарплату и не устают. Простейший способ заставить компьютер повторять какое-либо действие — это написать цикл.
Цикл While
В python существует два типа циклов: for и while. Идея циклов заключается в том, чтобы повторять код, до тех пор, пока некоторые условия не станут ложными. Для примера запустим следующий код с циклом while:
1 2 3 4 5 | n = 1 while (n < 5): print "n =", n n = n + 1 print "Loop finished " |
Мы создали переменную n и присвоили ей значений 1. Затем мы запускаем цикл while, внешний вид которого напоминает функцию. После команды while указано условие, выполнение которого проверятся. Далее следует тело цикла. Оно, как и тело функции, отделятся смещением от начала строки. Тело цикла заканчивается там, где строки кода идут на том же уровне отступа что и команда while. Единичное выполнения тела цикла называется итерацией.
Запустив цикл, мы выводим значение переменной n равное 1. Затем, в следующей строке цикла, мы увеличиваем значение n на единицу и снова возвращаемся к началу циклу. Выражение 2<5 является истинным, поэтому две следующие строки выполняются снова. Это продолжается до момента, когда переменная n станет равна 5, а выражение 5<5 станет ложным. После этого, выполнится строка с командой print «Loop finished»
Следует быть внимательным с условием цикла, так как очень просто сделать его бесконечным. В нашем примере достаточно изменить знак на — в строке, где мы увеличиваем n, и наша программа зависнет на выполнении вечного цикла. Чтобы в таком случае завершить ее, необходимо в интерактивном режиме нажать комбинацию клавиш CTRL+C или, в PyCharm нажать CTRL+F2 или квадрат, находящийся около кнопки запуска программы.
Цикл For
Другой вид циклов это — for. Он обычно используется при перечислении элементов каких-либо множеств, или похожих структур. Этими элементами могут быть переменные, строки, файлы…
Следующий код, делает то же самое, что и код из примера с циклом while, он выполняет команду print для ряда чисел:
1 2 3 | for n in range(1, 5): print "n =", n print "Loop finished" |
Здесь, мы используем функцию range(). Это встроеная в python функция, предназначенная для генерации числового ряда, в нашем случае ряда, состоящего из 4 чисел. Range() принимает два атрибута, начальное и конечное числа. В первой строке мы создаем переменную n и ей присваивается значение 1. Затем происходит первая итерация цикла, после которой n становится равна 2 и так продолжается, пока ряд сгенерированный range() не заканчивается до числа 5.
При использовании for нет необходимости обьявлять переменную цикла заранее, как мы это делали в цикле while.
Вложенные циклы
Мы можем вложить один цикл в другой, делая соответствующие отступы в строке, как, например, здесь:
1 2 3 | for n in range(1, 4): for j in ["a", "b", "c"]: print"n =", n, "and j =", j |
Вложенный цикл производит итерацию по списку символов [«a», «b», «c»]. В дальнейшем, мы разберем, для чего нужны списки, здесь он показывает, что необязательно использовать функцию range() в циклах for.
Вложенный цикл будет выполняться для каждого n, то есть в сумме выполнит 9 итераций.