Как писать условные операторы в Python 3
Введение
Условные операторы являются частью каждого языка программирования. С условными операторами у нас может быть код, который иногда запускается, а иногда не запускается, в зависимости от условий программы в это время.
Когда мы полностью выполняем каждый оператор программы, двигаясь сверху вниз, при этом каждая строка выполняется по порядку, мы не просим программу оценивать определенные условия. Используя условные операторы, программы могут определять, выполняются ли определенные условия, а затем сообщать, что делать дальше.
Давайте рассмотрим несколько примеров, где мы будем использовать условные операторы:
- Если учащийся набрал более 65 % по тесту, сообщите, что его оценка сдана; если нет, сообщите, что ее оценка неудовлетворительна
- Если у него есть деньги на счету, рассчитайте проценты; если нет, взимать штраф
- Если они покупают 10 или более апельсинов, рассчитайте скидку в размере 5%; если они покупают меньше, то не
Оценивая условия и назначая код для выполнения в зависимости от того, выполняются ли эти условия, мы пишем условный код.
В этом руководстве вы познакомитесь с написанием условных операторов на языке программирования Python.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.).
Если заявление
Мы начнем с оператора if
, который будет оценивать, является ли утверждение истинным или ложным, и запускать код только в том случае, если утверждение верно.
Информация: Чтобы следовать примеру кода в этом руководстве, откройте интерактивную оболочку Python в вашей локальной системе, выполнив команду python3
. Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>
.
В текстовом редакторе откройте файл и напишите следующий код:
grade = 70
if grade >= 65:
print("Passing grade")
В этом коде у нас есть переменная grade
, и мы присваиваем ей целочисленное значение 70
. Затем мы используем оператор if
, чтобы оценить, больше или равно значение переменной ( >=
) 65
. Если он соответствует этому условию, мы говорим программе распечатать строку Проходной балл
.
Сохраните программу как grade.py
и запустите ее в локальной среде программирования из окна терминала с помощью команды pythongrade.py
.
В этом случае оценка 70 действительно соответствует условию быть больше или равной 65, поэтому после запуска программы вы получите следующий вывод:
OutputPassing 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.")
Когда мы запустим программу с python account.py
, мы получим следующий вывод:
OutputBalance is below 0, add funds now or you will be charged a penalty.
В программе мы инициализировали переменную balance
значением -5
, что меньше 0. Так как баланс удовлетворял условию if
(balance < 0
), как только мы сохраним и запустим код, мы получим строковый вывод. Опять же, если мы изменим баланс на 0 или положительное число, мы не получим вывода.
Еще Заявление
Вполне вероятно, что мы захотим, чтобы программа что-то делала, даже если оператор if
оценивается как ложный. В нашем примере с оценкой нам нужно будет вывести, является ли оценка удовлетворительной или неудовлетворительной.
Для этого мы добавим оператор else
к приведенному выше условию оценки, построенному следующим образом:
grade = 60
if grade >= 65:
print("Passing grade")
else:
print("Failing grade")
Поскольку приведенная выше переменная оценки имеет значение 60
, оператор if
оценивается как ложный, поэтому программа не будет распечатывать Проходной балл
. Следующий за ним оператор else
сообщает программе, что она должна что-то сделать в любом случае.
Когда мы сохраним и запустим программу, мы получим следующий вывод:
OutputFailing grade
Если мы затем перепишем программу так, чтобы оценка была равна 65
или выше, вместо этого мы получим вывод Проходной балл
.
Чтобы добавить оператор 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.")
OutputYour balance is 0 or above.
Здесь мы изменили значение переменной balance
на положительное число, чтобы оператор else
печатался. Чтобы напечатать первый оператор if
, мы можем переписать значение в отрицательное число.
Комбинируя оператор if
с оператором else
, вы создаете условный оператор, состоящий из двух частей, который сообщает компьютеру, что нужно выполнить определенный код независимо от того, if или нет.
условие выполнено.
Иначе если заявление
До сих пор мы представили логический вариант для условных операторов, где каждый оператор if
оценивается либо как истина, либо как ложь. Во многих случаях нам понадобится программа, которая оценивает более двух возможных результатов. Для этого мы будем использовать оператор else if, который на Python написан как elif
. Оператор elif
или иначе 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 равен 0 , скорее пополняйте.
) - Если для переменной
balance
задано положительное число, мы получим выходные данные оператораelse
(Ваш баланс равен 0 или выше.
). - Если для переменной
balance
задано отрицательное число, на выходе будет строка из оператораif
(Balance меньше 0, добавьте средства сейчас или вам будет начислен штраф
).
Но что, если мы хотим иметь более трех возможностей? Мы можем сделать это, вписав в наш код более одного оператора elif
.
В программе grade.py
давайте перепишем код так, чтобы несколько буквенных оценок соответствовали диапазонам числовых оценок:
- 90 или выше соответствует оценке A
- 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, программа напечатает
Оценка
, если оценка меньше 90, программа перейдет к следующему оператору... - Если оценка больше или равна 80, программа напечатает
Bgrade
, если оценка 79 или меньше, программа перейдет к следующему оператору... - Если оценка больше или равна 70, программа напечатает
Cgrade
, если оценка 69 или меньше, программа перейдет к следующему оператору... - Если оценка больше или равна 65, программа напечатает
Оценка D
, если оценка 64 или меньше, программа перейдет к следующему оператору... - Программа напечатает
Неудовлетворительная оценка
, так как не были соблюдены все вышеуказанные условия.
Вложенные операторы if
Когда вы освоитесь с операторами if
, elif
и else
, вы можете перейти к вложенным условным операторам. Мы можем использовать вложенные операторы if
для ситуаций, когда мы хотим проверить вторичное условие, если первое условие выполняется как истинное. Для этого мы можем иметь оператор if-else внутри другого оператора if-else. Давайте посмотрим на синтаксис вложенного оператора if
:
if statement1: #outer if statement
print("true")
if nested_statement: #nested if statement
print("yes")
else: #nested else statement
print("no")
else: #outer else statement
print("false")
Этот код может привести к нескольким возможным результатам:
- Если
statement1
оценивается как true, программа затем оценивает, является лиnested_statement
также истинным. Если оба случая верны, вывод будет таким:
Outputtrue
yes
- Однако, если
statement1
оценивается как true, аnested_statement
— как false, вывод будет таким:
Outputtrue
no
- И если
statement1
оценивается как false, вложенный оператор if-else не будет выполняться, поэтому операторelse
будет выполняться один, и вывод будет таким:
Outputfalse
Мы также можем иметь несколько операторов if
, вложенных в наш код:
if statement1: #outer if
print("hello world")
if nested_statement1: #first nested if
print("yes")
elif nested_statement2: #first nested elif
print("maybe")
else: #first nested else
print("no")
elif statement2: #outer elif
print("hello galaxy")
if nested_statement3: #second nested if
print("yes")
elif nested_statement4: #second nested elif
print("maybe")
else: #second nested else
print("no")
else: #outer else
statement("hello universe")
В приведенном выше коде есть вложенный оператор if
внутри каждого оператора if
в дополнение к оператору elif
. Это позволит использовать больше вариантов для каждого условия.
Давайте рассмотрим пример вложенных операторов 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
, первое условие будет выполнено, и программа выведет Проходной балл:
. Затем он проверит, превышает ли оценка значение 90 или равно ему, и, поскольку это условие также выполняется, он распечатает A
.
Если мы запустим код с переменной grade
, установленной в 60
, то первое условие не будет выполнено, поэтому программа пропустит вложенный if
операторы и перейдите к оператору else
, при этом программа распечатает Неудовлетворительная оценка
.
Конечно, мы можем добавить к этому еще больше опций и использовать второй уровень вложенных операторов 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 (истина)
- Распечатайте
Проходной балл:
- Проверьте, больше ли оценка или равна 90 (правда)
- Проверьте, не превышает ли оценка 96 (ложь)
- Проверьте, больше ли оценка 93, а также меньше или равна 96 (правда)
- Распечатать
A
- Оставьте эти вложенные условные операторы и продолжите работу с оставшимся кодом.
Таким образом, результат программы для оценки 96 выглядит следующим образом:
OutputPassing grade of:
A
Вложенные операторы if
могут предоставить возможность добавить в код несколько определенных уровней условий.
Заключение
Используя условные операторы, такие как оператор if
, вы получите больший контроль над тем, что выполняет ваша программа. Условные операторы говорят программе оценить, выполняется ли определенное условие. Если условие выполнено, он выполнит определенный код, но если оно не будет выполнено, программа продолжит переход к другому коду.
Чтобы продолжить практиковать условные операторы, попробуйте использовать другую программу «Как создать простую программу-калькулятор», чтобы лучше познакомиться с условными операторами.