[МУЗЫКА] [МУЗЫКА] Сейчас мы научимся пользоваться условным оператором. Условный оператор позволяет выполнять те или иные действия в зависимости от результата вычисления логического выражения. Начнем с очень простой задачи: посчитать модуль числа. Что такое модуль? Это абсолютное значение, так называемое. Если число положительное или 0, то оно остается ровно таким же, как число. Если число было отрицательное, то мы берем минус это число, то есть получаем положительное, равное ему по модулю. Итак, нам задано число x, необходимо вывести модуль этого числа. Считываем, и если число отрицательное, нам необходимо заменить x на −x. Как это записывается? На самом деле очень просто: мы пишем слово if — «если» по-английски, а затем условие: если x < 0, и обязательно ставим двоеточие. Если число меньше 0, то следующие команды будут выполняться, только если это условие было верным. Как вы можете заметить, здесь у нас появился сдвиг, это означает, что команда, написанная здесь со сдвигом, будет выполняться, только если условие было верным. Что нам нужно сделать? x превратить в −x. Если мы хотим сделать какие-то команды уже безусловно, то есть независимо от того, было у нас условие выполнено, или не было условие выполнено, мы просто убираем этот отступ. То есть отступом выделяется та часть кода, которая будет относиться только к if, которая будет выполняться только, если условие было верным. Теперь наш x — гарантированно неотрицательное число, и мы можем просто его напечатать. Давайте посмотрим. Здесь принципиальные тесты — это три случая: ноль, положительное число, отрицательное число. Самое простое — это положительное число, оно не портится, то есть мы не заходим в этот if, эти команды не выполняются. Отрицательное число стало положительным. Наконец, на всякий случай проверим ноль. Почему? Потому что могли ошибиться, например: это частая ошибка, что вместо строгого равенства пишется не строгое или наоборот. Здесь это никак не повлияло бы, даже если бы этот if выполнился, то остался бы ноль, но на всякий случай лучше проверять. Вот так условный оператор позволяет выполнить команды в зависимости от условия. Можно сделать одну такую хитрость, которая покажет нам забавный эффект, который часто употребляется в логических выражениях, а именно порядок вычисления. Мы можем написать абсолютно бессмысленную конструкцию, мы попытаемся x разделить на ноль. Программа выпадет с ошибкой, если была такая ситуация. Давайте посмотрим, что будет происходить. Мы ввели положительное число, и оно осталось положительным. Будет ли она работать, если число отрицательное? А вот если число отрицательное, то мы получили ошибку. Почему же так? Логические выражения считаются не всегда полностью от начала и до конца, а как только становится понятен результат вычисления этого выражения, дальнейшие подсчеты полностью прекращаются. Вот здесь для положительного числа первое условие не выполнилось, и поскольку дальше идет логическое «и», то второе условие даже не имеет смысла проверять, подсчитывать, потому что и так, и так уже получится ложь, false. Потому что первое из них — ложь, и ложь с чем угодно, со связкой «и» даст по-прежнему ложь. Если же число было отрицательным, то первая проверка у нас дала истину, и мы вынуждены продолжать читать это выражение, и вот здесь натыкаемся на ошибку. Когда это может быть нужно? Например, вы хотите разделить одно число на другое, но у вас может оказаться так, что вы в какой-то момент можете попытаться разделить на ноль. Тогда нужно сначала проверить, что число не равно нулю, на который вы хотите делить, а уже затем делить и сравнивать результат деления или остатка с чем вам нужно. Такая особенность подсчета логических выражений может позволить сделать то, что другим способом сделать сложно. Код будет выглядеть красиво. Если вы изменяете порядок действий с помощью скобок, то будет происходить ровно то, что нужно. Действия будут выполняться так, как они на самом деле считаются. Как только результат вычисления выражения будет понятен, дальнейшие вычисления прекратятся. Здесь мы использовали логическое «и». То же самое происходит, если мы используем «или». Как только мы получили истину, то вторая часть выражения с «или» уже не считается, потому что понятно, что это будет истина, достаточно всего одной из них. Посмотрим еще один вариант решения задачи про взятие модуля числа. Допустим, мы не хотим портить нашу переменную x, а хотим печатать только правильный модуль. Вот наша переменная x. Что мы можем написать? Если x неотрицательное число, то есть x больше либо равно нуля, то мы будем печатать просто x, а иначе будем печатать −x. «Иначе» по-английски пишется как else и имеет ровно такой смысл. Какие действия делать, если условие не выполнено? Печатать −x. Обратите внимание, else пишется с тем же отступом, что if, к которому он относится. То есть вот так вот написать нельзя, это будет неправильно, потому что непонятно, к чему этот else относится. Существовать отдельно без if он не может, «иначе» может относиться только к кому-то «если». Это достаточно логично. Если у вас произошла какая-то беда с отступами, как у меня после всех этих манипуляций, можно нажать кнопочку Tab и получить новый отступ, или аккуратно удалить лишние пробелы, чтобы отступ стал правильным. Стандартный отступ — это четыре пробела. Если вы пишете в среде программирования, то так у вас и будет происходить, но если вдруг вам потребуется написать в обычном текстовом редакторе код на Python, то не забывайте ставить эти четыре пробела вручную или настройте редактор так, чтобы он их ставил. Давайте проверим, работает ли наш if-else, который должен решать абсолютно ту же задачу о подсчете модуля числа. Положительное число работает, ноль работает, и отрицательное число тоже работает. Таким образом, в некоторых ситуациях мы теперь научились писать более простые выражения с помощью else. Как можно было избавиться от else? Написать ровно противоположные условия. Например, отрицание к нашему предыдущему условию и вот такой if отрицания условия будет выполняться ровно в тех же ситуациях, в которых выполнялся else. Давайте посмотрим, что у нас ничего не сломалось, по-прежнему всё работает, но, как вы видите, букв написано больше, и понимать такой код сложнее. Поэтому, если у вас возникла ситуация, что в случае, если условие верно, делай одни действия, а если оно не верно, делай другие действия, то в этой ситуации логично пользоваться связкой if-else, если и иначе. [МУЗЫКА] [МУЗЫКА]