Условные операторы if else
Принятие решений — самый важный аспект почти всех языков программирования. Как следует из названия, принятие решений позволяет нам запускать определенный блок кода для принятия конкретного решения. Здесь решения принимаются на основе достоверности определенных условий. Проверка условий является основой принятия решений.
В языке python принятие решений осуществляется с помощью следующих конструкций.
Оператор | Описание |
---|---|
Оператор if | Оператор if используется для проверки определенного условия. Если условие истинно, будет выполнен блок кода ( if -блок). |
Оператор if else | Оператор if-else похож на оператор if , за исключением того, что в нем также предусмотрен блок кода для проверки ложного случая условия. Если условие, указанное в операторе if , ложно, то будет выполнен оператор else . |
Вложенный оператор if | Вложенные операторы if позволяют нам использовать оператор if ? else внутри внешнего оператора if . |
Отступы в Python
Для облегчения программирования и достижения простоты, python не позволяет использовать круглые скобки для кода на уровне блоков. В Python отступы используются для объявления блока. Если два утверждения находятся на одном уровне отступа, то они являются частью одного блока.
Как правило, для отступа утверждений отводится четыре пробела, что является типичным значением отступа в Python.
Отступы — наиболее используемая часть языка python, поскольку они объявляют блок кода. Все утверждения одного блока предназначены для отступов одного уровня. Мы увидим, как на самом деле происходит отступ при принятии решений и другие вещи в python. ex
Оператор if в python
Оператор if используется для проверки определенного условия, и если условие истинно, он выполняет блок кода, известный как if -блок. Условием оператора if может быть любое допустимое логическое выражение, которое может быть оценено как true или false .
Синтаксис if -выражения приведен ниже.
if expression: statement
num = int(input("enter the number?")) if num%2 == 0: print("Number is even")
enter the number?10 Number is even
Пример 2: Программа для печати наибольшего из трех чисел.
a = int(input("Enter a? ")); b = int(input("Enter b? ")); c = int(input("Enter c? ")); if a>b and a>c: print("a is largest"); if b>a and b>c: print("b is largest"); if c>a and c>b: print("c is largest");
Enter a? 100 Enter b? 120 Enter c? 130 c is largest
Оператор if-else
Оператор if-else предоставляет блок else в сочетании с оператором if , который выполняется в ложном случае условия.
Если условие истинно, то выполняется блок if . В противном случае выполняется блок else .
Синтаксис оператора if-else приведен ниже.
if condition: #block of statements else: #another block of statements (else-block)
Пример 1: Программа для проверки того, имеет ли человек право голосовать или нет.
age = int (input("Enter your age? ")) if age>=18: print("You are eligible to vote !!"); else: print("Sorry! you have to wait !!");
Enter your age? 90 You are eligible to vote !!
*Пример 2: Программа для проверки того, является ли число четным или нет. *
num = int(input("enter the number?")) if num%2 == 0: print("Number is even. ") else: print("Number is odd. ")
enter the number?10 Number is even
Оператор elif
Оператор elif позволяет нам проверять несколько условий и выполнять определенный блок операторов в зависимости от истинного условия среди них. В нашей программе может быть любое количество операторов elif в зависимости от необходимости. Однако использование elif необязательно.
Оператор elif работает как лестничный оператор if-else-if в языке C. Он должен сопровождаться оператором if .
Синтаксис оператора elif приведен ниже.
if expression 1: # block of statements elif expression 2: # block of statements elif expression 3: # block of statements else: # block of statements
number = int(input("Enter the number?")) if number==10: print("number is equals to 10") elif number==50: print("number is equal to 50"); elif number==100: print("number is equal to 100"); else: print("number is not equal to 10, 50 or 100");
Enter the number?15 number is not equal to 10, 50 or 100
marks = int(input("Enter the marks? ")) if marks > 85 and marks 60 and marks 40 and marks 30 and marks
Enter the marks? 88 Congrats ! you scored grade A .
Как работает функция else в Python?
В условных конструкция и циклах else является необязательным оператором.
В условных конструкция else срабатывает, в случае, если ни одно другое условие не подошло.
Пример 1
answer = 'yes' if answer = 'yes': print('Start game') else: print('Game over') # Output: Game over
В циклах else сработает после всех итераций.
Пример 2
sum_ = 0 for i in range(100): sum_ += i else: print('Done')
Пример 3
game_on = True while game_on: print('Do it game') else: print('Game over')
Оператор if else в Python
При изучении программирования в качестве практики часто приходится создавать «идеальные программы», которые в реальном мире работают совсем не так.
Иногда, например, нужно исполнить ряд инструкций только в том случае, если соблюдаются определенные условия. Для обработки таких ситуаций в языках программирования есть операторы управления. В дополнение к управлению потоком выполнения программы эти операторы используются для создания циклов или пропуска инструкций, когда какое-то условие истинно.
Операторы управления бывают следующих типов:
- Оператор-выражение if
- Оператор-выражение if-else
- Оператор-выражение if-elif-else
- Цикл while
- Цикл for
- Оператор-выражение break
- Оператор-выражение continue
В этом уроке речь пойдет о первых трех операторах управления.
Оператор if
Синтаксис оператора if следующий:
if condition: indented statement 1> indented statement 2> non-indented statement>
Первая строчка оператора, то есть if condition : — это условие if, а condition — это логическое выражение, которое возвращает True или False . В следующей строке блок инструкций. Блок представляет собой одну или больше инструкций. Если он идет следом за условием if, такой блок называют блоком if.
Стоит обратить внимание, что у каждой инструкции в блоке if одинаковый отступ от слова if. Многие языки, такие как C, C++, Java и PHP, используют фигурные скобки ( <> ), чтобы определять начало и конец блока, но в Python используются отступы.
Каждая инструкция должна содержать одинаковое количество пробелов. В противном случае программа вернет синтаксическую ошибку. В документации Python рекомендуется делать отступ на 4 пробела. Такая рекомендация актуальная для и для этого .
Как это работает:
Когда выполняется инструкция if, проверяется условие. Если условие истинно, тогда все инструкции в блоке if выполняются. Но если условие оказывается неверным, тогда все инструкции внутри этого блока пропускаются.
Инструкции следом за условием if, у которых нет отступов, не относятся к блоку if. Например, — это не часть блока if, поэтому она будет выполнена в любом случае.
number = int(input("Введите число: ")) if number > 10: print("Число больше 10")
Введите число: 100 Число больше 10
Введите число: 5
Стоит обратить внимание, что во втором случае, когда условие не истинно, инструкция внутри блока if пропускается. В этом примере блок if состоит из одной инструкции, но их может быть сколько угодно, главное — делать отступы.
Рассмотрим следующий код:
number = int(input("Введите число: ")) if number > 10: print("первая строка") print("вторая строка") print("третья строка") print("Выполняется каждый раз, когда вы запускаете программу") print("Конец")
Введите число: 45 первая строка вторая строка третья строка Выполняется каждый раз, когда вы запускаете программу Конец
Введите число: 4 Выполняется каждый раз, когда вы запускаете программу Конец
Здесь важно обратить внимание, что только выражения на строках 3, 4 и 5 относятся к блоку if. Следовательно, они будут исполнены только в том случае, когда условие if будет истинно. Но инструкции на строках 7 и 8 выполнятся в любом случае.
Консоль Python реагирует иначе при использовании операторов управления прямо в ней. Стоит напомнить, что для разбития выражения на несколько строк используется оператор продолжение ( \ ). Но в этом нет необходимости с операторами управления. Интерпретатор Python автоматически активирует мультистрочный режим, если нажать Enter после условия if. Например:
>>> >>> n = 100 >>> if n > 10: ...
После нажатия Enter на строке с условием if командная строка преобразуется с >>> на … . Консоль Python показывает … для многострочных инструкций. Это значит, что начатая инструкция все еще не закончена.
Чтобы закончить инструкцию if, нужно добавить еще одну инструкцию в блок if:
>>> >>> n = 100 >>> if n > 10: ... print("n v 10") ...
Python не будет автоматически добавлять отступ. Это нужно сделать самостоятельно. Закончив ввод инструкции, нужно дважды нажать Enter, чтобы исполнить инструкцию. После этого консоль вернется к изначальному состоянию.
>>> >>> n = 100 >>> if n > 10: ... print("n больше чем 10") ... n больше чем 10 >>>
Все эти программы заканчиваются внезапно, не показывая ничего, если условие не истинно. Но в большинстве случаев пользователю нужно показать хотя бы что-нибудь. Для этого используется оператор-выражение if-else.
Оператор if-else
Оператор if-else исполняет одну порцию инструкций, если условие истинно и другое — если нет. Таким образом этот оператор предлагает два направления действий. Синтаксис оператора if-else следующий:
if condition: # блок if statement 1 statement 2 and so on else: # блок else statement 3 statement 4 and so on:
Как это работает:
Когда оператор if-else исполняется, условие проверяется, и если оно возвращает True , когда инструкции в блоке if исполняются. Но если возвращается False , тогда исполняются инструкции из блока else.
Пример 1: программа для расчета площади и длины окружности круга.
radius = int(input("Введите радиус: ")) if radius >= 0: print("Длина окружности token punctuation">, 2 * 3.14 * radius) print("Площадь token punctuation">, 3.14 * radius ** 2) else: print("Пожалуйста, введите положительное число")
Введите радиус: 4 Длина окружности = 25.12 Площадь = 50.24
Введите радиус: -12 Пожалуйста, введите положительное число
Теперь программа показывает корректный ответ пользователю, даже если условие if не является истинным. Это и требуется.
В инструкциях if-else нужно следить за тем, чтобы условия if и else находились на одном уровне. В противном случае программа вернет синтаксическую ошибку. Например:
radius = int(input("Введите радиус: ")) if radius >= 0: print("Длина окружности token punctuation">, 2 * 3.14 * radius) print("Площадь token punctuation">, 3.14 * radius ** 2) else: print("Пожалуйста, введите положительное число")
Если попробовать запустить эту программу, то появится следующая ошибка:
$ python3 if_and_else_not_aligned.py File "if_and_else_not_aligned.py", line 6 else: ^ SyntaxError: invalid syntax $
Для исправления проблемы нужно вертикально выровнять if и else
Пример 2: программа для проверки пароля, введенного пользователем.
password = input("Введите пароль: ") if password == "sshh": print("Добро пожаловать") else: print("Доступ запрещен")
Введите пароль: sshh Добро пожаловать
Введите пароль: abc Доступ запрещен
Вложенные операторы if и if-else
Использовать операторы if-else можно внутри других инструкций if или if-else. Это лучше объяснить на примерах:
Оператор if внутри другого if-оператора
Пример 1: программа, проверяющая, имеет ли студент право на кредит.
gre_score = int(input("Введите текущий лимит: ")) per_grad = int(input("Введите кредитный рейтинг: ")) if per_grad > 70: # внешний блок if if gre_score > 150: # внутренний блок if print("Поздравляем, вам выдан кредит") else: print("Извините, вы не имеете права на кредит")
Здесь оператор if используется внутри другого if-оператора. Внутренним называют вложенный оператором if. В этом случае внутренний оператор if относится к внешнему блоку if, а у внутреннего блока if есть только одна инструкция, которая выводит “Поздравляем, вам выдан кредит”.
Как это работает:
Сначала оценивается внешнее условие if, то есть per_grad > 70 . Если оно возвращает True , тогда управление программой происходит внутри внешнего блока if. Там же проверяется условие gre_score > 150 . Если оно возвращает True , тогда в консоль выводится "Congratulations you are eligible for loan" . Если False , тогда программа выходит из инструкции if-else, чтобы исполнить следующие операции. Ничего при этом не выводится в консоль.
При этом если внешнее условие возвращает False , тогда выполнение инструкций внутри блока if пропускается, и контроль переходит к блоку else (9 строчка).
Введите текущий лимит: 160 Введите кредитный рейтинг: 75 Поздравляем, вам выдан кредит
Введите текущий лимит: 160 Введите кредитный рейтинг: 60 Извините, вы не имеете права на кредит
У этой программы есть одна маленькая проблема. Запустите ее заново и введите gre_score меньше чем 150 , а per_grade — больше 70 :
Введите текущий лимит: 140 Введите кредитный рейтинг: 80
Программа не выводит ничего. Причина в том, что у вложенного оператора if нет условия else. Добавим его в следующем примере.
Пример 2: инструкция if-else внутри другого оператора if.
gre_score = int(input("Введите текущий лимит: ")) per_grad = int(input("Введите кредитный рейтинг: ")) if per_grad > 70: if gre_score > 150: print("Поздравляем, вам выдан кредит") else: print("У вас низкий кредитный лимит") else: print("Извините, вы не имеете права на кредит")
Введите текущий лимит: 140 Введите кредитный рейтинг: 80 У вас низкий кредитный лимит
Как это работает:
Эта программа работает та же, как и предыдущая. Единственное отличие — у вложенного оператора if теперь есть инструкция else. Теперь если ввести балл GRE меньше, чем 150, программа выведет: “У вас низкий кредитный лимит”
При создании вложенных операторов if или if-else, всегда важно помнить об отступах. В противном случае выйдет синтаксическая ошибка.
Оператор if-else внутри условия else
Пример 3: программа для определения оценки студента на основе введенных баллов.
score = int(input("Введите вашу оценку: ")) if score >= 90: print("Отлично! Ваша оценка А") else: if score >= 80: print("Здорово! Ваша оценка - B") else: if score >= 70: print("Хорошо! Ваша оценка - C") else: if score >= 60: print("Ваша оценка - D. Стоит повторить материал.") else: print("Вы не сдали экзамен")
Введите вашу оценку: 92 Отлично! Ваша оценка А
Введите вашу оценку: 72 Хорошо! Ваша оценка - C
Введите вашу оценку: 56 Вы не сдали экзамен
Как это работает:
Когда управление программой переходит к оператору if-else, проверяется условие на строке 3 ( score >= 90 ). Если оно возвращает True , в консоль выводится “Отлично! Ваша оценка А”. Если значение неверное, управление переходит к условию else на 5 строке. Теперь проверяется условие score >= 80 (6 строка). Если оно верное, тогда в консоли выводится “Здорово! Ваша оценка — B”.
В противном случае управление программой переходит к условию else на 8 строке. И здесь снова имеется вложенный оператор if-else. Проверяется условие ( score >= 70 ). Если оно истинно, тогда в консоль выводится “Хорошо! Ваша оценка — C”. В противном случае управление переходит к блоку else на 11 строке. В конце концов, проверяется условие ( score >= 60 ). Если оно возвращает True , тогда в консоль выводится “Ваша оценка — D. Стоит повторить материал.” Если же False , тогда в консоли будет “Вы не сдали экзамен”. На этом этапе управление переходит к следующим инструкциям, написанным после внешнего if-else.
Хотя вложенные операторы if-else позволяют проверять несколько условий, их довольно сложно читать и писать. Эти же программы можно сделать более читабельными и простыми с помощью if-elif-else.
Оператор if-elif-else
Оператор if-elif-else — это альтернативное представление оператора if-else, которое позволяет проверять несколько условий, вместо того чтобы писать вложенные if-else. Синтаксис этого оператора следующий:
if condition_1: # блок if statement statement more statement elif condition_2: # первый блок elif statement statement more statement elif condition_3: # второй блок elif statement statement more statement ... else statement statement more statement
Примечание: … означает, что можно писать сколько угодно условий eilf .
Как это работает:
Когда исполняется инструкция if-elif-else, в первую очередь проверяется condition_1 . Если условие истинно, тогда исполняется блок инструкций if. Следующие условия и инструкции пропускаются, и управление переходит к операторам вне if-elif-else.
Если condition_1 оказывается ложным, тогда управление переходит к следующему условию elif , и проверяется condition_2 . Если оно истинно, тогда исполняются инструкции внутри первого блока elif . Последующие инструкции внутри этого блока пропускаются.
Этот процесс повторяется, пока не находится условие elif , которое оказывается истинным. Если такого нет, тогда исполняется блок else в самом конце.
Перепишем программу с помощью if-elif-else.
score = int(input("Введите вашу оценку: ")) if score >= 90: print("Отлично! Ваша оценка А") elif score >= 80: print("Здорово! Ваша оценка - B") elif score >= 70: print("Хорошо! Ваша оценка - C") elif score >= 60: print("Ваша оценка - D. Стоит повторить материал.") else: print("Вы не сдали экзамен")
Введите вашу оценку: 78 Хорошо! Ваша оценка - C
Введите вашу оценку: 91 Отлично! Ваша оценка А
Введите вашу оценку: 55 Вы не сдали экзамен
Такую программу намного легче читать, чем в случае с вложенными if-else.
if else в Python
Зачастую нам не нужно, чтобы в программе выполнился весь код. Вместо этого мы можем сделать так, чтобы определенный кусочек кода запускался только при выполнении определенного условия, а другая часть кода запускалась, если условие не выполнено. Вот тут и пригодятся условные операторы if и else.
Условные операторы if else в Python позволяют четко и компактно управлять логическим потоком программы. Они представляют собой ответвления – как развилки на дороге – которые изменяют способ выполнения кода и управляют процессом принятия решений.
Сегодня мы рассмотрим основы работы с операторами if , if. else и elif в Python, а также разберем всё на примерах.
Итак, давайте начнем!
Синтаксис базового оператора if
Оператор if в Python, по существу, говорит:
«Если это выражение оценивается как верное ( True ), то нужно запустить один раз код, следующий за выражением if . Если это выражение ложно (т.е. False ), то этот блок кода запускать не нужно».
Общий синтаксис if -блока выглядит следующим образом:
if условие: выполняй вот этот блок
Состав if -блока:
- Ключевое слово if , с которого и начинается блок кода.
- Затем идет условие. Его значение может оцениваться как истинное ( True ) или ложное ( False ). Круглые скобки вокруг условия необязательны, но они помогают улучшить читаемость кода, когда присутствует более одного условия.
- Двоеточие отделяет условие от следующих за ним инструкций.
- Новая строка и отступ из 4 пробелов (размер отступа оговорен в соглашениях по стилю Python).
- Наконец, идет само тело конструкции. Это код, который будет запускаться только в том случае, если наше условие выполняется, т.е. имеет значение True . В теле может быть несколько инструкций. В этом случае нужно быть внимательным: все они должны иметь одинаковый уровень отступа.
Возьмем следующий пример:
a = 1 b = 2 if b > a: print(" b is in fact bigger than a") # Output: b is in fact bigger than a
В приведенном выше примере мы создали две переменные, a и b , и присвоили им значения 1 и 2 соответственно.
Фраза в операторе print() выводится в консоль, потому что условие b > a оценивается как True . Раз условие истинно, следующий за ним код запускается. А если бы a было больше b , ничего бы не случилось. Код бы не запустился и ничего бы не вывелось в консоль.
a = 1 b = 2 if a > b print("a is in fact bigger than b")
Поскольку у нас a меньше b , условие оценивается как False , и в консоль ничего не выводится.
Как работает оператор if else в Python?
Оператор if запускает код только при выполнении условия. Иначе ничего не происходит.
Если же мы хотим, чтобы какая-то часть кода запускалась, когда условие не выполняется, нам нужен еще один оператор – else .
Синтаксис блока if..else выглядит следующим образом:
if условие: выполнить, если условие истинно else: выполнить, если условие ложно
По сути оператор if..else в Python говорит:
«Когда выражение после if оценивается как истинное ( True ), нужно выполнить следующий за ним код. Но если оно оценивается как ложное ( False ), нужно выполнить код, следующий за оператором else ».
Оператор else записывается на новой строке после последней строки кода с отступом и не может быть записан сам по себе. Оператор else является частью оператора if .
Код, следующий за else , также должен иметь отступ в 4 пробела, чтобы показать, что он является частью конструкции else .
Код, следующий за оператором else , выполняется только тогда, когда условие в if имеет значение False . Если условие в блоке if имеет значение True и, следовательно, запущен код после if , то код в блоке else не запустится.
a = 1 b = 2 if a < b: print(" b is in fact bigger than a") else: print("a is in fact bigger than b")
Здесь строка кода, следующая за оператором else , print(" a is in fact bigger than b") никогда не будет запущена. Условие в блоке if имеет значение True , поэтому выполняется только эта часть кода.
Блок else запускается в следующем случае:
a = 1 b = 2 if a > b: print(" a is in fact bigger than b") else: print("b is in fact bigger than a") # Output: b is in fact bigger than a
Имейте в виду, что нельзя написать какой-либо другой код между if и else . Вы получите SyntaxError , если сделаете это:
if 1 > 2: print("1 is bigger than 2") print("hello world") else: print("1 is less than 2") # Output: # File "", line 3 # print("hello world") # ^ # SyntaxError: invalid syntax
От редакции Pythonist. Также рекомендуем почитать «Блок else в циклах».
Как работает elif в Python?
Что, если мы хотим иметь больше, чем два варианта?
Вместо того, чтобы говорить: «Если первое условие истинно, сделай одно, в противном случае сделай другое», мы говорим: «Если это условие не истинно, попробуй другое, но если все условия не выполняются, сделай вот это».
elif означает else + if .
Базовый синтаксис данной конструкции выглядит так:
if первое_условие: выполнить одно elif второе_условие: выполнить другое else: выполнить это, если все предыдущие условия ложны
Мы можем использовать более одного оператора elif . Это дает нам больше условий и больше возможностей.
x = 1 if x > 10: print(" x is greater than 10!") elif x < 10: print("x is less than 10!") elif x < 20 : print("x is less than 20!") else: print("x is equal to 10") # Output: x is less than 10!
В этом примере оператор if проверяет конкретное условие, блоки elif – это две альтернативы, а блок else — последнее решение, если все предыдущие условия не были выполнены.
Важно помнить о порядке, в котором вы пишете свои условия elif .
В предыдущем примере, если бы мы написали:
x = 1 if x > 10: print(" x is greater than 10!") elif x < 20 : print("x is less than 20!") elif x < 10: print("x is less than 10!") else: print("x is equal to 10")
была бы выведена строка x is less than 20! , потому что это условие стояло раньше.
Оператор elif упрощает написание кода. Вы можете использовать его вместо многочисленных операторов if..else , которые быстро «плодятся» по мере роста и усложнения программ.
Если все операторы elif не рассматриваются и имеют значение False , тогда и только тогда будет выполняться код, следующий за оператором else .
Например, вот случай, когда будет выполняться инструкция else :
x = 10 if x > 10: print(" x is greater than 10!") elif x < 10: print("x is less than 10!") elif x >20 : print("x is greater than 20!") else: print("x is equal to 10") # Output: x is equal to 10
Заключение
Это основные принципы if , if..else и elif в Python, которые помогут вам начать работу с условными операторами.
В дальнейшем конструкции могут быть более сложными.
Условные операторы также могут быть вложены в другие условные операторы, в зависимости от проблемы, которую вы пытаетесь решить, и логики вашего решения.
Спасибо за чтение и успехов в написании кода!