Когда вы пишете программу, у вас постоянно возникает необходимость выполнить то или иное действие, тот или иной блок кода в зависимости от выполнения условия. Также может возникнуть необходимость какой-то блок кода выполнить несколько раз. Для этого существуют конструкции управления потоком. Об этих конструкциях мы и будем говорить в этом видео. Первое, на что мы посмотрим — это оператор if. Оператор if используется для выполнения каких-то действий при выполнении условия. Давайте посмотрим на пример. В данном примере мы определяем переменную company со значением my.com и далее используем оператор if и проверяем наличие подстроки my в нашей строке. Если условие выполняется, а условие выполняется в том случае, если оно интерпретируется как true, то блок кода под if выполняется. В данном случае подстрока my есть в строке my.com и наше условие выполняется. Иногда может быть так, что условие у вас сложное. Никаких проблем, вы можете записывать сложные условия в блоке оператора if, то есть вы можете выполнять различные bool'евские выражения, разделенные or, and и так далее. На втором примере как раз это показано. В некоторых случаях нужно выполнить какие-либо действия, когда условие не выполняется. Для этого существует оператор else. Оператор else в блоке if - else позволяет выполнить какой-то код, если условие не выполнилось. Посмотрим на примере. У нас в данном случае строка google.com, мы проверяем условие — наличие подстроки my в строке google.com Оно, конечно же, не выполняется, но благодаря оператору else мы можем это отловить и выполнить код, который печатает нам на экран то, что условие не выполнено. Также есть возможность использовать выражение if - elif - else, в котором добавился оператор elif. Он используется тогда, когда нужно проверить друг за другом какие-то условия, не связанные друг с другом. Опять же на примере посмотрим. Мы определяем переменную со значением google.com строковый, и дальше у нас в данном случае срабатывает блок elif, который выполняется тогда, когда подстрока google была найдена в нашей строке. Также во многих языках программирования вы могли встречать тернарный оператор. В Python'е есть его аналог, и он записывается вот таким вот образом, который вы видите на примере. То есть переменной будет присвоена строка Argentina в том случае, если условие выполнено, иначе будет присвоена строка Jamaica. Все это записывается в одну строчку, как вы можете видеть. В некоторых случаях это удобно. Перейдем к другому оператору, оператору while. While позволяет выполнять блок до тех пор, пока выполняется какое-то условие. Опять же давайте посмотрим на пример. Мы определяем переменную, i = 0, и будем прибавлять к переменной i единичку до тех пор, пока она меньше 100. Достаточно всё просто, мы пишем while i < 100, прибавляем единичку. Дальше. Иногда вам нужно проитерироваться по какой-то последовательности. Для этого в Python существует выражение for.. in. Мы на данный момент знаем две последовательности, о которых уже рассказывали — это строка и это байтовая строка В примере на слайде мы итерируемся по строке. Строка содержит значение Alex, и мы итерируемся с помощью выражения for...in, for letter in name, мы принтим буковку. Каждый юникодный символ друг за другом попадает в тело нашего for-цикла и с помощью функции print попадает в дальнейшем на экран. Встроенный объект range позволяет итерироваться по целым числам. Что это значит? Если мы напишем for i in range (3), то в теле блока for мы сначала получим ноль, потом один, потом два, но не три. Когда мы определяем объект range, он не включает в себя последнее значение. Давайте посмотрим на чуть более сложный пример. Это задачка. Может быть, многие слышали историю про Фридриха Гаусса, который решил ее на уроке школьной математики очень быстро. Уверен, что на Python'е мы решим ее не менее быстро и суть ее в том, чтобы получить сумму чисел от 0 до 100. С помощью цикла for мы очень просто можем это сделать. Объект range также может инициализироваться с двумя аргументами, для того чтобы проитерироваться по последовательности чисел, начиная с какого-то числа и заканчивая каким-то числом. Но опять же последнее число не будет включено в последовательность. Также есть возможность проинициализировать range с тремя аргументами, и последним аргументом будет шаг. В данном случае это проще всего понять на примере. Мы итерируемся по числам от одного до десяти с шагом два, и на экран выводятся только нечетные числа, потому что мы перескакиваем по два. Также есть возможность итерироваться по числам в обратном порядке. Для этого в качестве шага объекту range нужно передать −1. На примере видно, что мы от десяти до пяти, опять же пять не включительно, в обратном порядке прогулялись. Перейдем к оператору pass. Оператор pass — это оператор, определяющий пустой блок, который ничего не делает. В основном на практике вы будете использовать этот оператор в качестве заглушки на время, пока вам не нужно писать код в каком-то блоке, но потом вы к нему вернетесь и замените оператор pass на что-то более полезное. Однако иногда для создания простых классов-наследников оператор pass может играть и полезную роль. Об этом вам ещё будет рассказываться в следующих видео. На примере мы можем посмотреть, for i in range (100), pass, то есть мы итерируемся по числам и не делаем ничего в блоке цикла. Следующий оператор, на который мы посмотрим — это оператор break. Оператор break позволяет выйти из цикла досрочно. Что это значит? Давайте посмотрим на простом примере. У нас есть цикл while True, это бесконечный цикл, потому что условие всегда true, и он работал бы бесконечно, потребляя ресурсы процессора, если бы не наш оператор break, который мы вставили в код. Он отработает тогда, когда переменная result становится больше 100. Это позволяет выйти из цикла while, и выполнение программы достигает выражения print(result) и мы видим результат выполнения. Оператор break также работает и в циклах for, то есть если мы используем break внутри for, мы выходим из for. Также давайте посмотрим на оператор continue. Оператор continue позволяет перейти к следующей итерации в блоке цикла, не выполняя оставшиеся инструкции. Что это значит? Например, у нас есть задача сложить все числа от нуля до девяти, и при этом сложить только четные числа. С помощью continue мы можем реализовать это вот так, как вы видите на примере, то есть тогда, когда переменная i является нечетным числом, мы пишем continue и переходим к следующей итерации цикла for. Тем самым в result суммируются только четные числа, и мы получаем правильный ответ. Теперь, когда мы рассмотрели все основные конструкции управления потоком, мы можем попробовать применить их на практике и написать небольшую программу, которая будет содержать их в себе. Давайте это сделаем.