Что делает условный оператор в python
Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполняется.
Допустим мы хотим по данному числу x определить его абсолютную величину (модуль). Программа должна напечатать значение переменной x, если x>0 или же величину -x в противном случае. Линейная структура программы нарушается: в зависимости от справедливости условия x>0 должна быть выведена одна или другая величина. Соответствующий фрагмент программы на Питоне имеет вид:
x = int(input()) if x > 0: print(x) else: print(-x)
В этой программе используется условная инструкция if (если). После слова if указывается проверяемое условие (x > 0) , завершающееся двоеточием. После этого идет блок (последовательность) инструкций, который будет выполнен, если условие истинно, в нашем примере это вывод на экран величины x . Затем идет слово else (иначе), также завершающееся двоеточием, и блок инструкций, который будет выполнен, если проверяемое условие неверно, в данном случае будет выведено значение -x .
Итак, условная инструкция в Питоне имеет следующий синтаксис:
if Условие: Блок инструкций 1 else: Блок инструкций 2
Блок инструкций 1 будет выполнен, если Условие истинно. Если Условие ложно, будет выполнен Блок инструкций 2 .
В условной инструкции может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением. Например, если дано число x и мы хотим заменить его на абсолютную величину x , то это можно сделать следующим образом:
x = int(input()) if x < 0: x = -x print(x)
В этом примере переменной x будет присвоено значение -x , но только в том случае, когда x
Для выделения блока инструкций, относящихся к инструкции if или else в языке Питон используются отступы. Все инструкции, которые относятся к одному блоку, должны иметь равную величину отступа, то есть одинаковое число пробелов в начале строки. Рекомендуется использовать отступ в 4 пробела и не рекомедуется использовать в качестве отступа символ табуляции.
Это одно из существенных отличий синтаксиса Питона от синтаксиса большинства языков, в которых блоки выделяются специальными словами, например, нц. кц в Кумире, begin. end в Паскале или фигурными скобками в Си.
2. Вложенные условные инструкции
Внутри условных инструкций можно использовать любые инструкции языка Питон, в том числе и условную инструкцию. Получаем вложенное ветвление – после одной развилки в ходе исполнения программы появляется другая развилка. При этом вложенные блоки имеют больший размер отступа (например, 8 пробелов). Покажем это на примере программы, которая по данным ненулевым числам x и y определяет, в какой из четвертей координатной плоскости находится точка (x,y):
x = int(input()) y = int(input()) if x > 0: if y > 0: # x > 0, y > 0 print("Первая четверть") else: # x > 0, y < 0 print("Четвертая четверть") else: if y >0: # x < 0, y >0 print("Вторая четверть") else: # x < 0, y < 0 print("Третья четверть")
В этом примере мы использовали комментарии – текст, который интерпретатор игнорирует. Комментариями в Питоне является символ # и весь текст после этого символа до конца строки.
3. Операторы сравнения
Как правило, в качестве проверяемого условия используется результат вычисления одного из следующих операторов сравнения: < Меньше — условие верно, если первый операнд меньше второго.
> Больше — условие верно, если первый операнд больше второго.
>= Больше или равно.
== Равенство. Условие верно, если два операнда равны.
!= Неравенство. Условие верно, если два операнда неравны.
Операторы сравнения в Питоне можно объединять в цепочки (в отличии от большинства других языков программирования, где для этого нужно использовать логические связки), например, или .
4. Тип данных bool
Операторы сравнения возвращают значения специального логического типа bool . Значения логического типа могут принимать одно из двух значений: True (истина) или False (ложь). Если преобразовать логическое True к типу int , то получится 1, а преобразование False даст 0. При обратном преобразовании число 0 преобразуется в False , а любое ненулевое число в True . При преобразовании str в bool пустая строка преобразовывается в False , а любая непустая строка в True .
4.1. Логические операторы
Иногда нужно проверить одновременно не одно, а несколько условий. Например, проверить, является ли данное число четным можно при помощи условия (n % 2 == 0) (остаток от деления n на 2 равен 0 ), а если необходимо проверить, что два данных целых числа n и m являются четными, необходимо проверить справедливость обоих условий: n % 2 == 0 и m % 2 == 0 , для чего их необходимо объединить при помощи оператора and (логическое И): n % 2 == 0 and m % 2 == 0 .
В Питоне существуют стандартные логические операторы: логическое И, логическое ИЛИ, логическое отрицание.
является бинарным оператором (то есть оператором с двумя операндами: левым и правым) и имеет вид and . Оператор and возвращает True тогда и только тогда, когда оба его операнда имеют значение True .
является бинарным оператором и возвращает True тогда и только тогда, когда хотя бы один операнд равен True . Оператор “логическое ИЛИ” имеет вид or .
(отрицание) является унарным (то есть с одним операндом) оператором и имеет вид not , за которым следует единственный операнд. Логическое НЕ возвращает True , если операнд равен False и наоборот.
Пример. Проверим, что хотя бы одно из чисел a или b оканчивается на 0:
15 40
a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO')
Проверим, что число a — положительное, а b — неотрицательное:
if a > 0 and not (b < 0):
Или можно вместо not (b < 0) записать (b >= 0) .
Ветвление. Условный оператор if-else в Python
Ход выполнения программы может быть линейным, то есть таким, когда выражения выполняются друг за другом, начиная с первого и заканчивая последним. Ни одна строка кода программы не пропускается.
Однако чаще в программах бывает не так. При выполнении кода, в зависимости от тех или иных условий, некоторые его участки могут быть опущены, в то время как другие – выполнены. Иными словами, в программе может присутствовать ветвление, которое реализуется условным оператором – особой конструкцией языка программирования.
Проведем аналогию с реальностью. Человек живет по расписанию. Можно сказать, расписание – это алгоритм для человека, его программный код, подлежащий выполнению. В расписании на 18.00 стоит поход в бассейн. Однако экземпляр биоробота класса Homo sapiens через свои рецепторы-сенсоры получает информацию, что воду из бассейна слили. Разумно было бы отменить занятие по плаванию, то есть изменить ход выполнения программы-расписания. Одним из условий посещения бассейна должно быть его функционирование, иначе должны выполняться другие действия.
Подобная нелинейность действий может быть реализована в компьютерной программе. Например, часть кода будет выполняться лишь при определенном значении конкретной переменной. В языках программирования используется приблизительно такая конструкция условного оператора:
if логическое_выражение
Перевести на человеческий язык можно так: если логическое выражение возвращает истину, то выполняются выражения внутри фигурных скобок; если логическое выражение возвращает ложь, то код внутри фигурных скобок не выполняется. С английского "if" переводится как "если".
Конструкция if логическое_выражение называется заголовком условного оператора. Выражения внутри фигурных скобок – телом условного оператора. Тело может содержать как множество выражений, так и всего одно.
Пример использования условного оператора в языке программирования Python:
if n 100: a = a + b
В Питоне вместо фигурных скобок используется двоеточие. Обособление вложенного кода, то есть тела оператора, достигается за счет отступов. В программировании принято делать отступ равным четырем пробелам. Можно использовать клавишу табуляции ( Tab ) на клавиатуре.
Большинство сред программирования автоматически создают отступ, как только вы поставите двоеточие и перейдете на новую строку. Однако при работе в интерактивном режиме отступы надо добавлять вручную.
Нахождение в теле условного оператора здесь обозначается тремя точками. При создании файла со скриптом таких точек быть не должно, как и приглашения >>> .
Python считается языком с ясным синтаксисом и легко читаемым кодом. Это достигается сведением к минимуму таких вспомогательных элементов как различные скобки и точка с запятой. Для разделения выражений используется переход на новую строку, а для обозначения вложенных выражений – отступы от начала строки. В других языках данный стиль программирования также используется, но лишь для удобочитаемости кода человеком. В Питоне же такой стиль возведен в ранг синтаксического правила.
Данный пример вырван из контекста и сам по-себе не является рабочим. Полная версия программы могла бы выглядеть так:
a = 50 b = 10 n = 98 if n 100: a = a + b print(a)
Последняя строчка кода print(a) уже не относится к условному оператору, что обозначено отсутствием перед ней отступа. Она не является вложенной в условный оператор, значит, не принадлежит ему.
Поскольку переменная n равна 98, а это меньше 100, то a станет равной 60. Это значение будет выведено на экран. Если переменная n изначально была бы связана, например, со значением 101, то на экран было бы выведено 50. Потому что при n , равной 101, логическое выражение в заголовке условного оператора вернуло бы ложь. Значит, тело не было бы выполнено, и переменная a не изменилась бы.
Структуру программы можно изобразить следующим образом:
Основная ветка программы выполняется всегда, а вложенный код лишь тогда, когда в темно-зеленой строчке, обозначающей заголовок условного оператора, случается истина.
Для небольших программ иногда чертят так называемые блок-схемы, отражающие алгоритм выполнения. В языке блок-схем различные части кода обозначаются своими фигурами. Так блоку последовательно выполняемых действий соответствует прямоугольник, ветвлению – ромб. Для кода выше блок-схема может выглядеть так:
Условный оператор может включать не одну ветку, а две, реализуя тем самым полноценное ветвление.
В случае возврата логическим выражением False поток выполнения программы не возвращается сразу в основную ветку. На случай False существует другой вложенный код, отличный от случая True . Другими словами, встретившись с расширенной версией условного оператора, поток выполнения программы не вернется в основную ветку, не выполнив хоть какой-нибудь вложенный код.
В языках программирования разделение на две ветви достигается с помощью добавления блока else, получается так называемое if–else (если-иначе). Синтаксис выглядит примерно так:
if логическое_выражение < выражение 1; выражение 2; … >else
Если условие при инструкции if оказывается ложным, то выполняется блок кода при инструкции else . Ситуация, при которой бы выполнились обе ветви, невозможна. Либо код, принадлежащий if , либо код, принадлежащий еlse . Никак иначе. В заголовке else никогда не бывает логического выражения.
Пример программы с веткой else на языке Python (под ним показаны варианты выполнения):
your_money = int(input('Сколько у вас монет? ')) sword = 50 helmet = 32 if sword + helmet > your_money: print('Вы не можете купить меч и шлем') else: print('Удачный апгрейд!')
Сколько у вас монет? 85 Удачный апгрейд!
Сколько у вас монет? 63 Вы не можете купить меч и шлем
Следует иметь в виду, что логическое выражение при if может выглядеть нестандартно, то есть не так как a > b и тому подобное. Там может стоять просто одна переменная, число, слово True или False , а также сложное логическое выражение, когда два простых соединяются через логически and или or .
a = ? if a: a = 1
Если вместо знака вопроса будет стоять 0, то с логической точки зрения это False , значит выражение в if не будет выполнено. Если a будет связано с любым другим числом, то оно будет расцениваться как True , и тело условного оператора выполнится. Другой пример:
a = 5 > 0 if a: print(a)
Здесь a уже связана с булевым значением. В данном случае это True . Отметим, что в выражении a = 5 > 0 присваивание выполняется после оператора сравнения, так что подвыражение 5 > 0 выполнится первым, после чего его результат будет присвоен переменной a . На будущее, если вы сомневаетесь в последовательности выполнения операторов, используйте скобки, например так: a = (5 > 0) .
if a > 0 and a b: print(b - a)
Тут, чтобы вложенный код выполнился, a должно быть больше нуля и одновременно меньше b . Также в Питоне, в отличие от других языков программирования, позволительна такая сокращенная запись сложного логического выражения:
if 0 a b: print(b - a)
Практическая работа
- Напишите программу, которая просит пользователя что-нибудь ввести с клавиатуры. Если он вводит какие-нибудь данные, то на экране должно выводиться сообщение "ОК". Если он не вводит данные, а просто нажимает Enter , то программа ничего не выводит на экран.
- Напишите программу, которая запрашивает у пользователя число. Если оно больше нуля, то в ответ на экран выводится число 1. Если введенное число не является положительным, то на экран должно выводиться -1.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
#5 – Условные операторы
Условные конструкции предоставляют возможность выполнить проверку условия и в зависимости от результата выполнить определенный участок кода. За урок мы научимся использовать if-else, а также тернарный оператор в языке Python.
Видеоурок
Что такое условные операторы?
Они отвечают за изменение поведения программы в зависимости от входных параметров, определённых в проверке. Проще говоря: если будет число 1, то программа запустит скрипт one, а если число 2 – скрипт two. Внутри условных операторов могут быть другие такие же условия для уточнения полученных данных. В рамках одного оператора можно сразу проверить пару условий. Для того, чтобы проверить несколько условий нужно их разделить элементом and (логическое и).
Пример создания условия:
a = 2 if a != 0 and a != 1: print ("Проверка сработала")
На экране будет показана запись лишь в том случае, когда переменная «a» не будет равна значению 0 и значению 1. То есть обе проверки в операторе должны выдать результат – true.
Есть возможность произвести проверку с помощью or - логическое или. При использовании данного оператора достаточным поводом для запуска сообщения «Заработало» станет соответствие хотя бы одного из условий.
a = 1.1 if a != 1.1 or a > 0: print ("Проверка сработала")
Условный оператор «if-else»
user_data = int(input("Введите число: ")) isHappy = True if isHappy or user_data == 6: print("User is happy") elif user_data == 5: print("Number is 5") elif user_data == 7: print("Number is 7") else: print("User is unhappy") # if user_data != 5: # print("Мы на месте") # if user_data > 6: # print("Number is bigger than 5")
Посмотреть остальной код можно после подписки на проект!
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Условный оператор if-elif-else в Python
Основной инструмент выбора в Python: принцип работы и примеры.
Маргарита Катрич
Автор статьи
7 июля 2023 в 17:04
На понятных примерах рассказываем, что такое if-elif-else и как работает эта условная инструкция.
Что такое if-elif-else
Условный оператор if-elif-else в Python — это способ написать программный код так, чтобы он выдавал результат в зависимости от того, выполняется определенное условие или нет.
Когда есть несколько условий, можно использовать elif (сокращение от else if — «иначе если»), чтобы проверять их поочередно. Если ни одно из условий не истинно, используют блок else, чтобы выполнить код по умолчанию.
Синтаксис выглядит так:
if условие_1: # блок кода, который выполняется, если условие_1 истинно elif условие_2: # блок кода, который выполняется, если условие_2 истинно elif условие_3: # блок кода, который выполняется, если условие_3 истинно else: # блок кода, который выполняется, если ни одно из условий не истинно
Условия проверяются по порядку. Если какое-то из них истинно, выполняется соответствующий блок кода, а остальные игнорируются. Если ни одно из условий не истинно, выполняется блок кода в разделе else, если он присутствует.
Представим, что программа помогает вам выбрать одежду в зависимости от погоды:
weather = "солнечно" if weather == "дождливо": print("Возьми зонтик") elif weather == "солнечно": print("Надень солнцезащитные очки и кепку") else: print("Можешь носить что угодно")
Если погода дождливая, программа выдаст рекомендацию взять зонтик.
Если погода солнечная — надеть солнцезащитные очки и кепку.
Если нет ни дождя, ни солнца — нет конкретных рекомендаций.
В онлайн-университете Skypro освоить язык Python реально за десять месяцев комфортной учебы без спешки. Всего два часа в день — и вы овладеете всеми современными инструментами для успешной работы и станете уверенным Python-разработчиком. Даже если раньше никогда не писали код, научиться этому можно с нуля.
Рассказываем, как последовательно работать с каждым оператором.
Условный оператор if
В языке Python выражение считается истинным (true), если его результат — не ноль или выражение не является пустым объектом. Соответственно, оно считается ложным (false), если результат — ноль или пустой объект, в том числе значение none. При использовании операторов сравнения результатом выражения будет true, если условие выполняется, и false — в противном случае.
Инструкцию if в Python используют, чтобы выполнить блок кода, если заданное условие истинно.
Схематично конструкцию с if можно записать так:
if условное_выражение: инструкции инструкции .
if — оператор, который вводит условие;
двоеточие после условного выражения сообщает, что дальше будет действие или набор последовательных действий при выполнении условия;
инструкции — действие с каждым элементом.
Внутри одного условия можно выполнять несколько сравнений, что расширяет возможности использования условных конструкций. Это можно реализовать с помощью логических операторов and, not и or:
and — означает «И» для двух условий. Возвращает true, если оба условия истинны, и false — если ложны;
or — означает «ИЛИ» для двух условий. Возвращает true, если хотя бы одно из условий истинно, и false в противном случае;
not — означает «НЕ» для одного условия. Возвращает true, если условие ложно, и false — если истинно.
Эти операции используют, чтобы строить сложные логические выражения.
x = 5 y = 10 result = (x > 0) and (y < 15) print(result) # Вывод: True, так как оба условия (x >0 и y < 15) истинны
a = 0 b = 0 if a == 0 or b == 0: # Проверяется одно из условий print("Одна переменная или обе равны 0") else: print("Ни одна из переменных не равна 0")
В этом примере переменные a и b равны нулю. В условии мы проверяем, равна ли хотя бы одна переменная нулю. Если да — выводим сообщение «Одна переменная или обе равны 0». Когда ни одно из условий не выполнено (обе переменные не равны нулю), мы получаем сообщение «Ни одна из переменных не равна 0».
На курсе «Python-разработчик» в онлайн-университете Skypro лекции ведут преподаватели с большим опытом работы в крупнейших компаниях. Они не только дадут необходимую базу, но и поделятся тонкостями и фишками. Вас ждут интересные домашние задания, по которым обязательно получите конструктивную обратную связь. Всё это поможет быстро освоить инструменты и особенности языка программирования.
Оператор if-else
Оператор if-else в Python — это конструкция, которая позволяет выполнить один из двух блоков кода в зависимости от того, выполняется условие (выражение после if) как истинное или ложное. Если условие истинно, выполняется блок кода под if. Если условие ложно — else.
Синтаксис выглядит так:
if условие: # Блок кода, который выполняется, если условие истинно else: # Блок кода, который выполняется, если условие ложно
x = 10 if x > 5: print("x больше 5") else: print("x меньше или равен 5")
Если значение переменной x больше пяти, выполняется блок кода под if и выводится «x больше 5». В противном случае выполняется блок кода под else и выводится «x меньше или равен 5».
Рассмотрим в качестве примера процесс аутентификации пользователя.
username = input("Введите ваше имя пользователя: ") password = input("Введите ваш пароль: ")
Предположим, правильные данные для аутентификации — «user123» и «password123».
correct_username = "user123" correct_password = "password123" if username == correct_username and password == correct_password: print("Успешная аутентификация. Доступ разрешен.") else: print("Ошибка аутентификации. Проверьте имя и пароль.")
Вложенные операторы if и if-else
Можно использовать одни условные операторы внутри других. С такими конструкциями можно строить более сложные логические структуры в зависимости от множества условий. Такие операторы полезны, когда нужно проверить несколько условий с дополнительными логическими шагами внутри каждого.
Оператор if внутри другого if-оператора
x = 10 if x > 0: print("x - положительное число") if x % 2 == 0: print("x - четное число") else: print("x - нечетное число") else: print("x - не положительное число")
В этом примере, если x — положительное число, программа проверяет, четное оно или нет. Внутренний блок с вложенным оператором if выполняется только в том случае, если внешнее условие (x > 0) истинно.
Оператор if-else внутри условия else
x = 15 if x > 10: print("x больше 10") else: print("x не больше 10") if x % 2 == 0: print("x - четное число") else: print("x - нечетное число")
В этом похожем примере, если x не больше десяти, программа проверяет, четный он или нет. Внутренний блок с вложенным оператором if-else выполняется в зависимости от четности числа. В случае x > 10 четность не проверяется.
В онлайн-университете Skypro вы можете не только освоить язык программирования Python, но и сделать первые карьерные шаги в новой профессии. В центре карьеры вас научат правильно составлять продающее резюме, портфолио и цепляющие сопроводительные письма, а еще успешно проходить собеседования.
Оператор if-elif-else
Допустим, вам нужно определить тип треугольника.
side1 = 3 side2 = 4 side3 = 5 if side1 == side2 == side3: print("Треугольник равносторонний") elif side1 == side2 or side1 == side3 or side2 == side3: print("Треугольник равнобедренный") else: print("Треугольник разносторонний")
В этом примере в зависимости от длины сторон треугольника программа определяет его тип. Если все три стороны равны, это равносторонний треугольник. Если две любые стороны равны, это равнобедренный треугольник. В противном случае треугольник считается разносторонним.
Рассмотрим другой пример. Допустим, нам нужно дать оценку работе студента по определенной системе.
grade = 78 if 90В этом примере, если оценка находится в диапазоне 90–100 включительно, программа выдает сообщение с оценкой «5». Если оценка находится в диапазоне 80–89, выдается сообщение с оценкой «4», и так далее.
Как выполняется if-elif-else:
- Программа проверяет условие_1.
- Если условие_1 истинно, выполняется блок кода под if и остальные блоки (elif и else) игнорируются.
- Если условие_1 ложно, программа проверяет условие_2.
- Если условие_2 истинно, выполняется блок кода под первым elif и остальные блоки (последующие elif и else) игнорируются.
- Процесс повторяется для каждого elif в порядке следования.
- Если ни одно из условий не истинно, выполняется блок кода под else — при его наличии.
Главное об условном операторе if-elif-else в Python
Условный оператор if-elif-else в Python помогает написать код так, чтобы он выдавал результат в зависимости от того, выполняется определенное условие или нет. Когда есть несколько условий, можно использовать elif, чтобы проверять их поочередно. Если ни одно из условий не истинно, используют else, чтобы выполнить код по умолчанию.
В языке Python выражение считается истинным (true), если его результат — не ноль или выражение не является пустым объектом. А ложным (false) оно считается, если результат — ноль или пустой объект, в том числе значение none. При использовании операторов сравнения результатом выражения будет true, если условие выполняется, и false — в противном случае.
Внутри одного условия можно выполнять несколько сравнений, что позволяет расширить возможности использования условных конструкций. Это можно реализовать с помощью логических операторов: and возвращает true, если оба условия истинны, и false — если ложны; or возвращает true, если хотя бы одно из условий истинно, и false в противном случае; not возвращает true, если условие ложно, и false — если истинно.