Условный оператор if – elif – else в Python

Условный оператор выбора if – elif – else в Python и логические условия

Условный оператор — это оператор, который позволяет выполнять определенный участок кода, если указанное условие истинно (т.е. равно True).

Синтаксис оператора if

if

if (условное выражение):
    код
    код

Очень важно, чтобы код, который должен быть выполнен, при истинном условии, был отделен 4 пробелами, от основного кода.

Как работает условный оператор

Разберем работу if на примере:

a = 1
if a > 0:
    print('Условие верно!')
#Условие верно!

Мы присвоили переменной a единицу, далее создали условие:
Если a больше нуля, то выполняем инструкции, т.е. печатаем Условие верно!.
Т.к. 1 больше 0, значим условие истинно и равно True, то мы увидели выполнение функции print.

Если же условие не будет выполняться и вернется False, то все инструкции внутри этого блока пропускаются:

Конструкция if – else

if-else

Иногда нужно иметь альтернативный вариант выполнения программы, если условие верно выполняем один кусок программы, в противном случае выполняется другая часть.

Для этого случая и используется необязательный оператор else:

a = 1
if a < 0:
    print('Отрицательное число')
else:
    print('Положительное число')
#Положительное число

Работает эта конструкция так:
Если выражение истинно, выполняем инструкции, иначе — выполняем другие инструкции.

Конструкция if – elif – else

if-elif

Но бывают и такие моменты, когда нужно проверить не одно, а сразу несколько условий.
В этом случае удобно использовать оператор elif.

a = 1
if a < 0:
    print('Отрицательное число')
elif a > 0:
    print('Положительное число')
else:
    print('Ноль')
#Положительное число

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

Но перебарщивать с этим тоже не стоит, если в вашем коде более 5 elif, то возможно стоит пересмотреть алгоритм выполнения программы.

Конструкция if — else в одну строку

Python позволяет записывать условия и в одну строку, в таком формате:

<инструкции если True> if <условие> else <инструкции если False>

Возьмем код, записанный стандартным способом:

a = 1
if a < 0:
    print('Отрицательное число')
else:
    print('Положительное число')
#Положительное число

И запишем его в одну строку:

a = 1
print('Отрицательное число') if a < 0 else print('Положительное число')
#Положительное число

Все работает правильно. Однако, на мой взгляд читаемость условия в одну строку сильно уступает стандартному способу. Особенно, если условий будет больше.

Вложенные условия

Можно без проблем размещать одни условия внутри других. Ограничений по этому поводу нет.

Для примера напишем код, который будет переводить 100 бальную оценку в 5 бальную:

points = 75
if points >= 90:
    print(5)
else:
    if points >= 80:
        print(4)
    else:
        if points >= 70: 
            print(3)
        else:
            if points >= 60:
                print(2)
            else:
                print(1)
#3

Как видно, не очень удобно читать, гораздо проще так:

points = 75
if points >= 90:
    print(5)
elif points >= 80:
    print(4)
elif points >= 70:
    print(3)
elif points >= 60:
    print(2)
else:
    print(1)
#3

Операторы сравнения

В Python есть 6 основных операторов сравнения.

ВыражениеОписание
if x > 5если x больше 5
if x < 5если x меньше 5
if x >= 5если x больше либо равен 5
if x <= 5если x меньше либо равен 5
if x == 5если x равен 5
if x != 5если x не равен 5
x = 5
y = 5
if x < y:
    print(f'{x} меньше чем {y}')
if x > y:
    print(f'{x} больше чем {y}')
if x == y:                      
    print(f'{x} равно {y}')
if x != y:
    print(f'{x} не равно {y}')
#5 равно 5

Цепочки сравнений

Также Python предоставляет возможность сравнивать не только 2 переменных между собой, но и строить цепочки сравнений:

  • 1 <= x <= 10 (х больше или равно 1 и меньше или равно 10, т.е. находится в промежутке от 1 до 10)
  • a == b == c (все три переменные равны друг другу)
x = 5
if 1 <= x <= 10:
    print('Верно')
#Верно
a = 5
b = 5
c = 5
if a == b == c:
    print('числа равны')
#числа равны

Применение логических операторов

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

  • and — логическое ‘И’;
  • or — логическое ‘ИЛИ’;
  • not — логическое ‘НЕ’.

Рассмотрим, как работает каждый логический оператор на примерах.

Оператор and

Служит для объединения условий, означает, что инструкции будут выполняться, только если все части условий будут истинны.

Таблица истинности для оператора and:

aba and b
FalseFalseFalse
FalseTrueFalse
TrueFalseFalse
TrueTrueTrue

Для примера, напишем код, который проверяет, является ли число четным и что оно больше 10:

Для того чтобы определить четное число используем остаток от деления a % 2, если остаток от деления равен 0, то число четное.
Второе условие a > 10 будет просто проверять, что наше число больше 10.
И объединим эти два условия с помощью оператора and.

Теперь, мы получим ответ ‘YES’, если оба условия будут True, если хоть одно из двух условий будет False, то мы получим ответ ‘NO’:

a = 12
if a % 2 == 0 and a > 10:
    print('YES')
else:
    print('NO')
#YES
a = 8
if a % 2 == 0 and a > 10:
    print('YES')
else:
    print('NO')
#NO
a = 223
if a % 2 == 0 and a > 10:
    print('YES')
else:
    print('NO')
#NO

Стоит заметить, что количество операторов and может быть любым.

Оператор or

Служит для объединения условий, означает, что инструкции будут выполняться, если хотя бы одно из условий будет истинно.

Таблица истинности для оператора or:

aba or b
FalseFalseFalse
FalseTrueTrue
TrueFalseTrue
TrueTrueTrue

Напишем код, который проверят переменную и если она равна 10 или 20, то выводит соответствующее сообщение.

a = 20
if a == 10 or a == 20:
    print('YES')
else:
    print('NO')
#YES
a = 10
if a == 10 or a == 20:
    print('YES')
else:
    print('NO')
#YES
a = 1
if a == 10 or a == 20:
    print('YES')
else:
    print('NO')
#NO

Оператор not

Оператор not позволяет заменить на противоположный результат логического выражения.

Таблица истинности для оператора not:

anot a
FalseTrue
TrueFalse

Для примера напишем код, который проверяет длину пароля и если длина больше 10 символов, то выводит соответствующее сообщение.

passw = 'jtu4i5ud3f4wg43w'
if not (len(passw) < 10):
    print('YES')
else:
    print('NO')
#YES

Условие в этом случае можно прочитать так: если длина пароля не меньше 10.

Этот код будет делать то же самое:

passw = 'jtu4i5ud3f4wg43w'
if len(passw) > 10:
    print('YES')
else:
    print('NO')
#YES

Здесь условие читается так: если длина пароля больше 10.

Приоритеты логических операторов

Как и у арифметических операций, у логических тоже есть свой приоритет выполнения:

  • в первую очередь выполняется логическое ‘НЕ’ — not;
  • далее выполняется логическое ‘И’ — and;
  • далее выполняется логическое ‘ИЛИ’ — or.

Если нужно изменить очередность, то нужно использовать скобки, так же, как и с арифметическими операциями.

Содержание: