Условные операторы являются важным инструментом в программировании, позволяющим программам принимать решения и выполнять различные действия в зависимости от условий.
Приветствуем вас в ещё одной интересной теме! В этой теме рассмотрим условные операторы и узнаем, как они используются для управления потоком программы.
Начнем с оператора if
, который выполняет блок кода, только если заданное условие истинно. Затем перейдем к
операторам if-else
и if-elif-else
, позволяющим выполнить разные блоки кода в зависимости от разных условий.
Также изучим вложенные операторы if
, которые позволяют создавать иерархию условных проверок и принимать более сложные
решения. Познакомимся с тернарным оператором, позволяющим создавать сокращенные условные выражения.
Далее рассмотрим новый оператор match
, введенный в Python 3.10. Он предоставляет удобный и выразительный способ
сопоставления значений и выполнения соответствующих действий.
- Оператор if
- Операторы if-else
- Операторы if-elif-else
- Вложенные операторы if
- Тернарный оператор
- Оператор match
- Задания по теме
Оператор if
является одним из ключевых элементов условного программирования. Он позволяет программе принимать решения
и выполнять определенные действия на основе истинности или ложности заданного условия.
Оператор if
начинается с ключевого слова if
, за которым следует выражение, которое должно быть вычислено в булево
значение - True
(истина) или False
(ложь). Если выражение возвращает True
, то блок кода, который следует за
оператором if
, будет выполнен. Если же выражение возвращает False
, то блок кода будет пропущен, и программа
продолжит свое выполнение после блока if
.
Пример использования оператора if
:
age = 20
if age >= 18:
print("Вы совершеннолетний!")
print("Добро пожаловать на наш сайт!")
Переменная age
содержит значение 20
. Оператор if
проверяет, является ли значение age
больше или
равным 18
. Поскольку это условие истинно, блок кода, который следует за оператором if
, будет выполнен. В результате
на экран выводится сообщение "Вы совершеннолетний!"
и "Добро пожаловать на наш сайт!"
.
Рассмотрим другой пример, в котором условие в операторе if
является ложным, и код программы после блока if
будет
выполнен:
age = 16
if age >= 18:
print("Вы совершеннолетний!")
print("Добро пожаловать на наш сайт!")
print("Продолжаем выполнение программы...")
В этом примере переменная age
имеет значение 16
, которое не удовлетворяет условию age >= 18
. Поэтому блок кода
внутри оператора if
не будет выполнен. Вместо этого, выполнение программы продолжится сразу после блока if
и
на экран выводится сообщение "Продолжаем выполнение программы..."
.
Дополнительные возможности оператора if
- это использование логических операторов, таких как
логическое not
(НЕ), логическое and
(И) и логическое or
(ИЛИ).
- Логический оператор
and
(И) позволяет проверять, выполняются ли два или более условия одновременно. Если все условия, объединенные с помощью оператораand
, оцениваются какTrue
, то блок кода внутри оператораif
будет выполнен.
age = 25
income = 50000
if age >= 18 and income >= 30000:
print("Вы прошли проверку для получения кредита!")
print("Поздравляем!")
Условие оператора if
проверяет, является ли возраст age
больше или равным 18
и доход income
больше или равным 30000
. Если оба условия выполняются, блок кода внутри оператора if
будет выполнен и
на экран выводится сообщение "Вы прошли проверку для получения кредита!"
и "Поздравляем!"
.
- Логический оператор
or
(ИЛИ) позволяет проверять, выполняется ли хотя бы одно из нескольких условий. Если хотя бы одно из условий, объединенных с помощью оператораor
, оценивается какTrue
, то блок кода внутри оператораif
будет выполнен.
is_student = True
is_employed = False
if is_student or is_employed:
print("Вы имеете право на скидку!")
print("Приятных покупок!")
В примере выше, условие оператора if
проверяет, является ли человек студентом is_student
или
сотрудником is_employed
. Если хотя бы одно из условий выполняется, блок кода внутри оператора if
будет выполнен и на экран выводится сообщение "Вы имеете право на скидку!"
и "Приятных покупок!"
.
- Логический оператор
not
(НЕ) позволяет инвертировать логическое значение. Он применяется к одному операнду, возвращаетTrue
, если операнд равенFalse
, и наоборот. Операторnot
полезен, когда требуется проверить, что условие не выполняется.
is_student = False
if not is_student:
print("Вы не являетесь студентом.")
print("Получите информацию о других доступных скидках!")
В данном примере, переменная is_student
имеет значение False
. Оператор not
инвертирует значение переменной,
то есть делает его противоположным.
Если значение is_student
равно False
, тогда not is_student
будет равно True
.
Блок кода внутри if
будет выполняться только в том случае, если значение переменной
is_student
не является истинным, то есть False
.
Оператор if
также может быть использован для проверки наличия элементов в коллекциях данных.
Это позволяет программе принимать решения на основе наличия или отсутствия определенных значений.
Рассмотрим пример с использованием оператора if
для проверки наличия элемента в списке:
fruits = ["яблоко", "банан", "апельсин"]
if "яблоко" in fruits:
print("Яблоко есть в списке фруктов!")
В этом примере, оператор if
проверяет, содержит ли список fruits
элемент "яблоко"
. Если элемент "яблоко"
присутствует в списке, то блок кода внутри оператора if
будет выполнен и на экран выводитсяqw
сообщение "Яблоко есть в списке фруктов!"
.
Оператор if
и логический оператор not
могут быть использованы для проверки пустоты структур данных.
Например, можно проверить, содержит ли список какие-либо элементы или является ли словарь пустым:
numbers = [] # пустой список, False
if not numbers:
print("Список чисел пуст!")
person = {} # пустой словарь, False
if not person:
print("Словарь персоны пуст!")
В этих примерах, оператор if
проверяет, является ли список numbers
или словарь person
пустыми. Если структура
данных не содержит элементов, то блок кода внутри оператора if
будет выполнен и на экран
выводится соответствующее сообщение.
Оператор if
может быть дополнен операторами else
и elif
, чтобы расширить возможности условного выполнения кода.
Оператор else
позволяет задать блок кода, который будет выполнен, если условие оператора if
оценивается как False
.
Это позволяет предусмотреть альтернативное поведение программы в случае, когда условие if
не выполняется.
age = 15
if age >= 18:
print("Вы совершеннолетний!")
print("Добро пожаловать на наш сайт!")
else:
print("Извините, доступ только для совершеннолетних!")
print("Приходите снова, когда вам исполнится 18 лет!")
Переменная age
содержит значение 15
. Поскольку это значение меньше 18
, условие оператора if
не
выполняется, и блок кода внутри оператора else
будет выполнен. В результате на экран выводится сообщение
"Извините, доступ только для совершеннолетних!"
и "Приходите снова, когда вам исполнится 18 лет!"
.
Оператор elif
(сокращение от else if) позволяет задать дополнительные условия для проверки. Если предыдущее
условие if
не выполняется, будет проверено условие оператора elif
. Если условие оценивается как True
,
соответствующий блок кода будет выполнен, и выполнение программы продолжится после блока if-elif-else
.
score = 85
if score >= 90:
print("Ваша оценка - A")
elif score >= 80:
print("Ваша оценка - B")
elif score >= 70:
print("Ваша оценка - C")
else:
print("Ваша оценка ниже C")
В этом примере, переменная score
содержит значение 85
. Оператор if
проверяет, является ли значение score
больше
или равным 90
. Поскольку это условие не выполняется, проверяется следующее условие оператора elif
.
Условие score >= 80
оценивается как True
, поэтому будет выполнен соответствующий блок кода, и на экран выводится
сообщение "Ваша оценка - B"
.
Вложенные операторы if
позволяют создавать иерархию условных проверок и принимать более сложные решения в программе.
Они позволяют проверять не только одно условие, но и дополнительные условия внутри блока кода операторов if-elif-else
Рассмотрим пример, в котором используются вложенные операторы для проверки возраста пользователя и проверки, является ли он совершеннолетним и имеет ли разрешение на вождение:
age = 19
has_license = True
if age >= 18:
print("Вы совершеннолетний!")
if has_license:
print("У вас есть водительское удостоверение.")
print("Можете начать вождение!")
else:
print("У вас нет водительского удостоверения.")
print("Пройдите процедуру получения водительского удостоверения.")
else:
print("Вы несовершеннолетний.")
print("Дождитесь достижения возраста 18 лет.")
В этом примере, первый оператор if
проверяет, является ли возраст age
пользователя больше или равным 18
. Если это
условие истинно, то блок кода внутри первого оператора if
будет выполнен. Затем внутри этого блока кода, используется
вложенный оператор if
для проверки наличия водительского удостоверения has_license
. Если условие has_license
истинно, то выводятся сообщения о наличии водительского удостоверения и возможности начать вождение. Если
условие has_license
ложно, то выводятся сообщения о необходимости получить водительское удостоверение.
Если условие первого оператора if
ложно и возраст пользователя меньше 18
лет, то будет выполнен блок кода else
,
который выводит сообщения "Вы несовершеннолетний."
и "Дождитесь достижения возраста 18 лет."
.
Пример иерархической вложенности с использованием операторов if-elif-else
:
x = 10
if x > 0:
print("x положительное число.")
if x > 5:
print("x больше 5.")
if x > 8:
print("x больше 8.")
else:
print("x меньше или равно 8.")
elif x == 5:
print("x равно 5.")
else:
print("x меньше 5.")
else:
print("x отрицательное число.")
if x > -5:
print("x больше -5.")
if x > -2:
print("x больше -2.")
else:
print("x меньше или равно -2.")
else:
print("x меньше или равно -5.")
В этом примере проверяем значение переменной x
на различные условия и создаем иерархию вложенности операторов
if-elif-else
. Внутри блока else
также имеется вложенность, где проверяются условия для отрицательных чисел.
Тернарный оператор представляет собой сокращенную форму условного оператора if-else
. Он позволяет компактно
записывать условные выражения в одну строку кода.
Синтаксис тернарного оператора выглядит следующим образом:
результат_if_True if условие else результат_if_False
В этом выражении сначала выполняется проверка условия. if условие
истинно, то возвращается результат_if_True
, иначе
возвращается результат_if_false
.
Тернарный оператор особенно полезен, когда нам нужно присвоить переменной значение в зависимости от выполнения условия. Это позволяет сократить количество кода и сделать его более читаемым.
x = 10
result = "Положительное число" if x > 0 else "Отрицательное число или ноль"
print(result) # Положительное число
Если x
больше нуля, то result
будет содержать строку "Положительное число"
, иначе она будет содержать строку
"Отрицательное число или ноль"
.
- Проверка четности числа:
num = 7
result = "Четное" if num % 2 == 0 else "Нечетное"
print(result) # Нечетное
В данном примере используем тернарный оператор, чтобы проверить, является ли число num
четным или нечетным. Если
остаток от деления num
на 2
равен 0
, то число четное, и в переменную result
записывается строка "Четное"
.
В противном случае, записывается строка "Нечетное"
.
- Вывод максимального значения из двух:
a = 10
b = 7
max_value = a if a > b else b
print(max_value) # 10
В примере выше используем тернарный оператор, чтобы определить максимальное значение между переменными a
и b
.
Если a
больше b
, то в переменную max_value
записывается значение a
, иначе записывается значение b
.
- Проверка наличия элемента в списке:
nums = [1, 2, 3, 4, 5]
k = 6
result = "Присутствует" if k in nums else "Отсутствует"
print(result)
Если элемент присутствует в списке, в переменную result
записывается строка "Присутствует"
.
В противном случае, записывается строка "Отсутствует"
.
В Python 3.10 версии был введен новый оператор match
, который предоставляет более удобный и выразительный способ
сопоставления значений и выполнения соответствующих действий. Оператор match
позволяет проверять значения
переменных на соответствие определенным шаблонам и выполнять соответствующий блок кода.
Синтаксис оператора имеет следующую структуру:
match выражение:
case значение_1:
# блок кода для значения_1
case значение_2:
# блок кода для значения_2
...
case значение_n:
# блок кода для значения_n
case _:
# блок кода для остальных случаев
В операторе match
указываем проверяемое выражение после ключевого слова match
. Затем перечисляем
различные case
(случаи) с соответствующими значениями и блоками кода, которые будут выполняться, если значение
переменной соответствует указанному.
Каждый case
содержит значение и соответствующий ему блок кода, который будет выполняться только при совпадении
значения с указанным. Также можем использовать символ подчеркивания _
в качестве специального случая, который
соответствует любому значению, не указанному явно.
Оператор match
напоминает оператора switch
, используемый в некоторых языках программирования, таких
как C++
, C
или Java
. Оба оператора предоставляют возможность сопоставления значения переменной с
набором различных случаев и выполнения соответствующего блока кода в зависимости от совпадения.
Оператор match
позволяет заменить несколько последовательных операторов if-elif-else
более компактным и
выразительным синтаксисом.
Примеры использования оператора match
:
day_number = 4
match day_number:
case 1:
print("Понедельник")
case 2:
print("Вторник")
case 3:
print("Среда")
case 4:
print("Четверг")
case 5:
print("Пятница")
case 6:
print("Суббота")
case 7:
print("Воскресенье")
case _:
print("Некорректный номер дня")
# с помощью if-elif-else
if day_number == 1:
print("Понедельник")
elif day_number == 2:
print("Вторник")
# ... и т.д.
else:
print("Некорректный номер дня")
В примере выше сопоставляем значение переменной day_number
с различными случаями дней недели. Если значение
совпадает с одним из указанных case
(случаев), будет выполнен соответствующий блок кода. Если значение не
совпадает ни с одним из указанных case
(случаев), будет выполнен блок кода, указанный после case _:
.
- Определение типа планеты по её названию:
planet_name = "Марс"
match planet_name:
case "Меркурий":
print("Меркурий - ближайшая планета к Солнцу")
case "Венера":
print("Венера - планета, известная своим ярким сиянием")
case "Земля":
print("Земля - наша родная планета")
case "Марс":
print("Марс - планета, на которой могла существовать жизнь")
case "Юпитер":
print("Юпитер - самая большая планета в Солнечной системе")
case "Сатурн":
print("Сатурн - планета, известная своими кольцами")
case "Уран":
print("Уран - планета, наклоненная на бок")
case "Нептун":
print("Нептун - планета, расположенная на краю Солнечной системы")
case "Плутон":
print("Плутон - бывший девятый планета, теперь классифицируется как карликовая планета")
В данном примере не указали явный case _:
для обработки всех остальных случаев, которые не совпадают с
предыдущими case
. Поэтому, если значение переменной planet_name
не совпадает ни с одним из указанных названий
планет, то никакой блок кода не будет выполнен.
Это означает, что при выполнении кода, если значение planet_name
не равно ни одному из указанных названий планет, то
программа просто продолжит выполнение следующих строк кода после оператора match
, и никаких дополнительных действий
или блоков кода не будет выполнено.
Важно! Операторы and
, or
и not
не используются вместе с оператором match
. Вместо них в используются другие
конструкции для сопоставления и выполнения условий.
Вместо логического оператора or
для объединения нескольких условий, можно использовать |
(пайп).
value = 2
match value:
case 1 | 2 | 3:
print("Значение равно 1, 2 или 3")
case _:
print("Значение не соответствует указанным условиям")
- Сопоставление дня недели с соответствующими действиями:
day = "среда"
match day:
case "понедельник" | "вторник":
print("Работа")
case "среда":
print("Половинчатый день")
case "четверг" | "пятница":
print("Работа и подготовка к выходным")
case "суббота" | "воскресенье":
print("Выходные дни")
case _:
print("Недопустимый день")
В этом примере сопоставляем значение переменной day
с различными случаями дней недели. Используя оператор |
,
можем указывать несколько значений в одном случае. Когда значение day
совпадает с одним из указанных случаев,
соответствующий блок кода будет выполнен. Если значение не совпадает ни с одним из указанных случаев, будет выполнен
блок кода, указанный после case _:
.
- Пример использования двух
case
подряд для замены оператораand
в оператореmatch
:
language = "Python"
version = 3.9
match language, version: # обратите внимание, что проверяются две переменные с match
case "Python", 3.9:
print("Используется Python версии 3.9")
case "Python", 3.10:
print("Используется Python версии 3.10")
case _, _:
print("Неизвестная комбинация языка и версии")
Если значение переменной language
равно "Python"
и значение переменной version
равно 3.9
, то будет выполнено
указанное действие. Если оба условия не выполняются, будет проверяться следующий case
. Если ни одно из
условий (case
) не совпадает, будет выполнен блок кода после case _, _:
, который обрабатывает неизвестные
комбинации language
и version
.
Рассмотрели основные условные операторы if
, if-else
, if-elif-else
и их вложенные иерархии,
а также тернарный оператор и оператор match
, расширение введенное в Python 3.10. Надеемся, что вы
получили ценные знания в этой важной теме программирования для принятия решений и управления потоком программы.
В следующей теме рассмотрим Циклы
научимся выполнять блок кода многократно.