Условные операторы – важная часть любого языка программирования. Они позволяют выполнять команды (или наборы команд) только при наличии определённых условий.
При помощи условных операторов программа может определить, выполняются ли определенные условия, а затем решить, что делать дальше.
К примеру, условные операторы можно было бы использовать в следующих ситуациях:
- Если студент правильно выполнил как минимум 65% заданий, то он сдал тест; если студент выполнил правильно менее 65% заданий, то он провалил тест.
- Если на счету есть деньги, начисляются проценты; если денег на счету нет, взымается штраф.
- При покупке 10 и больше апельсинов клиенты получают скидку в размере 5%; если они покупают меньше, то не получают скидки.
Оценивая условия и запуская команды в зависимости от соблюдения этих условий, вы можете написать условный код.
Данное руководство научит вас пользоваться условными операторами в Python.
Оператор if
Для начала рассмотрим оператор if. Он определяет условие как истинное или ложное, и если условие истинно, программа выполняет соответствующее действие.
Откройте текстовый редактор и наберите следующие строки:
grade = 70
if grade >= 65:
print("Passing grade")
В этом коде присутствует переменная grade, её значение – целое число 70. Оператор if сравнивает значение переменной с числом 65 и определяет, пройден ли тест. Если значение переменной меньше 65, тест не пройден. Если условие соблюдено, и значение переменной больше или равно 65, программа выведет на экран «Passing grade».
Сохраните эту простую программу как grade.py и запустите её в локальной среде:
python grade.py.
Читайте также:
- Настройка локальной среды разработки для Python 3 в CentOS 7
- Настройка локальной среды разработки для Python 3 в Windows 10
- Настройка локальной среды разработки для Python 3 в Mac OS X
- Настройка локальной среды разработки для Python 3 в Ubuntu 16.04
В данной ситуации значение переменной 70 отвечает условиям, потому на экране появится:
Passing grade
Попробуйте уменьшить значение переменной grade:
grade = 60
if grade >= 65:
print("Passing grade")
Сохраните и запустите программу. Как видите, теперь значение переменной не отвечает условиям, потому программа ничего не делает.
В качестве ещё одного примера попробуйте определить, ниже или выше нуля баланс банковского счета.
Создайте файл account.py и добавьте в него такие строки:
balance = -5
if balance < 0:
print("Balance is below 0, add funds now or you will be charged a penalty.")
Запустите программу:
python account.py
Команда вернёт:
Balance is below 0, add funds now or you will be charged a penalty.
Заданная в программе переменная balance имеет значение -5, что меньше 0. Это отвечает условию оператора if (balance < 0), потому программа возвращает указанное сообщение. Попробуйте самостоятельно увеличить значение переменной balance и снова запустить программу.
Оператор else
В некоторых ситуациях необходимо, чтобы программа выполнила какое-то действие даже тогда, когда выражение if ложно. Например, программа grade.py может сообщать не только об успешном результате теста, но и о его провале.
Для этого используется оператор else. Добавьте его в код:
grade = 60
if grade >= 65:
print("Passing grade")
else:
print("Failing grade")
Сохраните и запустите программу.
Итак, значение переменной grade – целое число 60, что не отвечает условию grade >= 65. Раньше программа просто молчала, теперь благодаря оператору else она может вернуть:
Failing grade
Перепишите программу, присвойте переменной grade значение 65. Запустите её снова. На экране появится:
Passing grade
Теперь попробуйте добавить оператор else в программу account.py.
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 и else, вы можете написать код, который будет выполнять то или иное действие в зависимости от того, истинно или ложно указанное выражение.
Оператор elif
В некоторых случаях программа должна обрабатывать более двух возможных результатов, чего операторы if и else обеспечить не могут.
В такой ситуации используется оператор else if, который в Python сокращен до elif.
Рассмотрим его работу на примере программы account.py. При помощи оператора elif можно создать три условия:
- Баланс ниже 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")
Данная программа выполняет следующие действия:
- Сравнивает значение переменной grade со всеми выражениями. Если значение переменной не отвечает условию выражения, оно переходит к следующему выражению.
- Если значение отвечает условию одного из выражений, оно не передаётся дальше. Оператор выполняет соответствующее действие (в данном случае выводит на экран сообщение об оценке: A grade, B grade и т.д.).
- Если значение переменой не отвечает условиям операторов if и elif, оно переходит к оператору else, который отображает сообщение Failing grade.
Вложенные операторы if
Вложенные операторы if позволяют добавить в код второстепенные условия, которые будут проверены, если первичное выражение истинно. То есть, таким образом вы можете поместить одно выражение if-else внутри другого выражения if-else. Синтаксис имеет такой вид:
if statement1: #первичное выражение if
print("true")
if nested_statement: #вложенное выражение if
print("yes")
else #вложенное выражение else
print("no")
else: #первичное выражение else
print("false")
Программа может вернуть такие результаты:
- Если выражение statement1 истинно, программа оценит выражение nested_statement как истинное или ложное. Если вложенное выражение также истинно, она вернёт:
true
yes
- Если statement1 истинно, а nested_statement ложно, программа выведет на экран:
true
no
- Если выражение statement1 ложно, программа не будет оценивать вложенные выражения и выведет:
false
В код можно добавить неограниченное количество вложенных операторов: э
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")
Рассмотрим вложенные операторы на примере программы grade.py. К примеру, сначала программа может убедиться, что результаты теста можно засчитать (для этого нужно выполнить правильно минимум 65% заданий), а затем уже выставить оценки. Таким образом, если тест провален, программа не будет сверять значение переменной со всеми выражениями, а сразу выведет Failing grade.
. . .
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:
Затем она сравнит значение переменной с остальными выражениями. Поскольку в данном случае значение соответствует первому условию (grade >= 90), программа выведет:
А
Попробуйте установить переменной grade значение 60 и посмотрите, как поведёт себя программа. В этом случае первичное выражение if ложно, потому она сразу перейдёт к первичному оператору else и выведет:
Failing grade
Вы можете добавить в программу больше параметров, например, разделить оценки на А+, А, А- и так далее. Такой код будет выглядеть так:
. . .
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 (в данном случае это условие выполняется).
- Выведет на экран Passing grade of:.
- Затем она сравнит значение с условием grade >= 90 (в данном случае оно истинно).
- Программа проверит условие grade > 96 (ложно).
- После этого она убедится, что значение больше 93 и меньше или равно 96 (истинно).
- Программа выведет А.
Вывод команды будет выглядеть так:
Passing grade of:
A
Вложенные операторы if позволяют создать несколько дополнительных уровней кода и расширить его функции.
Заключение
Овладев условными операторами Python, вы сможете более точно определять действия программ. Условные операторы позволяют программе оценивать условия как ложные или истинные и выполнять (или не выполнять) действия согласно этим условиям.
Операторы можно комбинировать с помощью операторов and и or и объединять в циклы.