Skip to content

shox-py/topic_6

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

6. Условные операторы

img.svg

Условные операторы являются важным инструментом в программировании, позволяющим программам принимать решения и выполнять различные действия в зависимости от условий.

Приветствуем вас в ещё одной интересной теме! В этой теме рассмотрим условные операторы и узнаем, как они используются для управления потоком программы.

Начнем с оператора if, который выполняет блок кода, только если заданное условие истинно. Затем перейдем к операторам if-else и if-elif-else, позволяющим выполнить разные блоки кода в зависимости от разных условий. Также изучим вложенные операторы if, которые позволяют создавать иерархию условных проверок и принимать более сложные решения. Познакомимся с тернарным оператором, позволяющим создавать сокращенные условные выражения.

Далее рассмотрим новый оператор match, введенный в Python 3.10. Он предоставляет удобный и выразительный способ сопоставления значений и выполнения соответствующих действий.



Оператор if

Оператор 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

Оператор if может быть дополнен операторами else и elif, чтобы расширить возможности условного выполнения кода.

Оператор else позволяет задать блок кода, который будет выполнен, если условие оператора if оценивается как False. Это позволяет предусмотреть альтернативное поведение программы в случае, когда условие if не выполняется.

age = 15

if age >= 18:
    print("Вы совершеннолетний!")
    print("Добро пожаловать на наш сайт!")
else:
    print("Извините, доступ только для совершеннолетних!")
    print("Приходите снова, когда вам исполнится 18 лет!")

Переменная age содержит значение 15. Поскольку это значение меньше 18, условие оператора if не выполняется, и блок кода внутри оператора else будет выполнен. В результате на экран выводится сообщение "Извините, доступ только для совершеннолетних!" и "Приходите снова, когда вам исполнится 18 лет!".

Операторы if-elif-else

Оператор 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 позволяют создавать иерархию условных проверок и принимать более сложные решения в программе. Они позволяют проверять не только одно условие, но и дополнительные условия внутри блока кода операторов 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 записывается строка "Присутствует". В противном случае, записывается строка "Отсутствует".


Оператор match

В 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. Надеемся, что вы получили ценные знания в этой важной теме программирования для принятия решений и управления потоком программы.

В следующей теме рассмотрим Циклы научимся выполнять блок кода многократно.


About

6.Условные операторы

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages