Как писать условные выражения в Python 3
Условные конструкции являются обязательной частью любого языка программирования. Они позволяют проверить, выполняются ли заданные условия, а затем определить, что делать дальше.
Несколько примеров, в которых используются условные операторы:
- Если учащийся правильно ответил более чем на 65% вопросов теста, сообщить, что он получил проходной балл. Если нет, сообщить, что он не проходит.
- Если у человека есть деньги на счете, начислить проценты. Если нет, оштрафовать.
- Если клиент покупает 10 апельсинов или больше, рассчитать скидку 5%. Если меньшее количество, скидка не положена.
Эта статья посвящена использованию условных конструкций в Python.
Оператор if
Оператор if оценивает, является ли утверждение истинным или ложным. Код выполняется только в том случае, если утверждение истинно.
Создайте в текстовом редакторе новый файл и внесите в него следующий код:
grade = 70
if grade >= 65:
print("Passing grade")
В нем мы присваиваем переменной grade целочисленное значение 70. Затем в операторе if проверяем, является ли переменная больше или равной ( >=) 65. Если это условие выполняется, программа выводит строку Passing grade .
Сохраните проект как grade.py и запустите его в локальной среде программирования из окна терминала.
В этом случае grade отвечает условию, поэтому вы получите следующий результат:
Вывод:
Passing grade
Изменим значение переменной grade на 60:
grade = 60
if grade >= 65:
print("Passing grade")
В результате программа ничего не выведет на экран. Условие не было выполнено, и мы не указали в коде другой оператор для этого случая.
Еще один пример. Выясним, является ли остаток на банковском счете меньше 0. Для этого создадим файл с именем account.py и напишем следующую программу:
balance = -5
if balance < 0:
print("Balance is below 0, add funds now or you will be charged a penalty.")
Результат работы кода:
Вывод:
Balance is below 0, add funds now or you will be charged a penalty.
В этой программе мы инициализировали переменную balance значением -5, которое меньше 0. Так как условие, указанное в операторе if выполняется, программа выведет сообщение. Но если мы изменим баланс на 0 или положительное число, то не получим его.
Оператор else
В примере с grade мы хотим получить результат независимо от того, выполняется условие или нет. Для этого нужно добавить оператор else:
grade = 60
if grade >= 65:
print("Passing grade")
else:
print("Failing grade")
Переменная grade имеет значение 60, поэтому условие в if не выполняется, и программа не будет выводить сообщение «Passing grade». Но оператор else указывает программе в любом случае что-то сделать.
Результат работы программы:
Вывод:
Failing grade
Чтобы добавить else в пример с балансом банковского счета, мы переписываем код следующим образом:
balance = 522
if balance < 0:
print("Balance is below 0, add funds now or you will be charged a penalty.")
else:
print("Your balance is 0 or above.")
Вывод:
Your balance is 0 or above.
Мы изменили значение переменной balance на положительное число, чтобы оператор else выводил строку. Чтобы вывести сообщение из оператора if для печати, измените значение переменной на отрицательное число.
Применяя if с оператором else, вы создаете условную конструкцию, которая указывает программе выполнять код независимо от того, верно условие или нет.
Оператор else if
Часто нам нужна программа, которая оценивает более двух возможных результатов. Для этого мы будем использовать оператор else if, который указывается в Python как elif. Оператор elif или else if выглядит как оператор if и оценивает другое условие.
В примере с балансом банковского счета нам потребуется вывести сообщения для трех разных ситуаций:
- Баланс ниже 0.
- Баланс равен 0.
- Баланс выше 0.
Условие elif будет размещено между if и оператором else следующим образом:
if balance < 0:
print("Balance is below 0, add funds now or you will be charged a penalty.")
elif balance == 0:
print("Balance is equal to 0, add funds soon.")
else:
print("Your balance is 0 or above.")
После запуска программы:
- Если переменная balance равна 0, мы получим сообщение из оператора elif («Balance is equal to 0, add funds soon»).
- Если переменной balance задано положительное число, мы получим сообщение из оператора else («Your balance is 0 or above»).
- Если переменной balance задано отрицательное число, выведется сообщение из оператора if («Balance is below 0, add funds now or you will be charged a penalty»).
А что если нужно реализовать более трех вариантов сообщения? Этого можно достигнуть, используя более одного оператора elif.
В программе grade.py создадим несколько буквенных оценок, соответствующих диапазонам числовых:
- 90% или выше эквивалентно оценке А.
- 80-89% эквивалентно оценке B.
- 70-79% - оценке C.
- 65-69% - оценке D.
- 64 или ниже эквивалентно оценке F.
Для этого нам понадобится один оператор if, три оператора elif и оператор else, который будет обрабатывать непроходные баллы.
Мы можем оставить оператор else без изменений.
if grade >= 90:
print("A grade")
elif grade >=80:
print("B grade")
elif grade >=70:
print("C grade")
elif grade >= 65:
print("D grade")
else:
print("Failing grade")
Поскольку операторы elif будут оцениваться по порядку, можно сделать их довольно простыми. Эта программа выполняет следующие шаги:
- Если оценка больше 90, программа выведет «A grade». Если оценка меньше 90, программа перейдет к следующему оператору.
- Если оценка больше или равна 80, программа выведет «B grade». Если оценка 79 или меньше, программа перейдет к следующему оператору.
- Если оценка больше или равна 70, программа выведет «C grade». Если оценка 69 или меньше, программа перейдет к следующему оператору.
- Если оценка больше или равна 65, программа выведет «D grade». Если оценка 64 или меньше, программа перейдет к следующему оператору.
- Программа выведет «Failing grade», если все перечисленные выше условия не были выполнены.
Вложенные операторы If
Вложенные операторы if используются, когда нужно проверить второе условие, когда первое условие выполняется. Для этого можно использовать оператор if-else внутри другого оператора if-else. Синтаксис вложенного оператора if:
if statement1: #внешний оператор if
print("true")
if nested_statement: #вложенный оператор if
print("yes")
else: #вложенный оператор else
print("no")
else: #внешний оператор else
print("false")
Результатом работы программы может быть:
- Если значение statement1 равно true, программа проверяет, равно ли true значение nested_statement. Если оба условия выполняются, результат будет следующим:
Вывод:
true
yes
- Если statement1оценивается как true, но nested_statement оценивается как false, вывод будет уже другим:
Вывод:trueno
- Значение statement1 равно false, а вложенный оператор if-else не будет выполняться, поэтому «сработает» оператор else:
Вывод:
false
Также можно использовать несколько вложенных операторов if:
if statement1: #внешний if
print("hello world")
if nested_statement1: #первый вложенный if
print("yes")
elif nested_statement2: # первый вложенный elif
print("maybe")
else: # первый вложенный else
print("no")
elif statement2: # внешний elif
print("hello galaxy")
if nested_statement3: #второй вложенный if
print("yes")
elif nested_statement4: # второй вложенный elif
print("maybe")
else: # второй вложенный else
print("no")
else: # внешний else
statement("hello universe")
В приведенном выше коде внутри каждого оператора if (в дополнение к оператору elif ) используется вложенный if. Это дает больше вариантов в каждом условии.
Используем пример вложенных операторов if в программе grade.py. Сначала проверим, является ли балл проходным (больше или равно 65%). Затем оценим, какой буквенной оценке соответствует балл. Но если балл непроходной, нам не нужно проверять буквенные оценки. И можно сразу информировать ученика, что балл является непроходным. Модифицированный код с вложенным оператором if:
if grade >= 65:
print("Passing grade of:")
if grade >= 90:
print("A")
elif grade >=80:
print("B")
elif grade >=70:
print("C")
elif grade >= 65:
print("D")
else:
print("Failing grade")
При переменной grade равной 92 первое условие будет выполнено, и программа выведет «Passing grade of:». Затем она проверит, является ли оценка больше или равной 90. Это условие также будет выполнено и она выведет A.
Если переменная grade равна 60, то первое условие не будет выполнено. Поэтому программа пропустит вложенные операторы if, перейдет к оператору else и выведет сообщение «Failing grade».
Но можно добавить еще больше вариантов и использовать второй слой вложенных if. Например, чтобы определить оценки A+, A и A-. Мы можем сделать это, сначала проверив, является ли оценка проходной, затем, является ли оценка 90 или выше. А после этого, превышает ли оценка 96 для A+, например:
if grade >= 65:
print("Passing grade of:")
if grade >= 90:
if grade > 96:
print("A+")
elif grade > 93 and grade <= 96:
print("A")
elif grade >= 90:
print("A-")
Для переменной grade со значением 96 программа выполнит следующее:
- Проверит, является ли оценка больше или равной 65 (true).
- Выведет «Passing grade of:»
- Проверит, является ли оценка больше или равной 90 (true).
- Проверит, превышает ли оценка 96 (false).
- Проверит, является ли оценка больше 93, а также меньше или равна 96 (true).
- Выведет
- Пропустит оставшиеся вложенные условные операторы и вернется к остающемуся коду.
Результат работы программы для переменной grade равной 96:
Вывод:
Passing grade of:
A
Вложенные операторы if позволяют добавлять несколько уровней условий в создаваемый код.
Заключение
Используя условные операторы, вы получите больший контроль над выполнением программы. Они позволяют оценить, выполняется ли заданное условие.