Посмотреть все уроки курса
Выбрать другой урок из курса
Поиск по сайту
Теория урока

2.5. Условная инструкция if-elif-else в Python

Оглавление урока

В предыдущем уроке мы научились форматировать строки с использованием метода format() и f-строк. Сейчас немного отвлечемся от работы с типами, чтобы лучше понять необходимость теории из следующего урока.

Условная конструкция if

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

В этой конструкции ключевое слово if является обязательным, в свою очередь, ключевые слова elif и else используются при необходимости. Важные моменты:

  • ключевое слово if всегда указывается первым в условной конструкции;
  • после ключевого слова if должно быть условие и, если оно истинно (возвращает True), то выполняется код в блоке;
  • с помощью elif можно добавить другие условия, которые будут выполняться после проверки условия if;
  • elif не может существовать без if. Ключевое слово elif указывается только после if;
  • блок else выполнится, только если все условия в if и elif ложные (возвращают False).

Проще рассмотреть на примере:

Пример
a = 2

if (a == 2):
    print("Два")
elif (a == 3):
    print("Три")
else:
    print("Другое число")

Как вы уже поняли, программа выведет «Два», так как условие a == 2 истинно (т.е. возвращает True):

Пример
print(a == 2) # => True       

Обратите внимание, после записанного в скобках условия ставится знак двоеточие, и последующий блок кода оформляется с отступом (табуляцией). В Python блок кода оформляется обязательным отступом, иначе интерпретатор сочтет это ошибкой. Например:

Пример
# Правильно
if (a == 2):
    print("Цифра")
    print("Два")

# Неправильно
if (a == 2):
print("Цифра")
print("Два")       

В следующем примере будет выведено слово «Цифра», только если a равно 2, а слово «Два» будет выводиться независимо от условия:

Пример
if (a == 2):
    print("Цифра")
print("Два")

Теперь разберемся, что в Python является истинным (True), а что ложным (False).

К истинным значениям в Python относятся:

  • любое число не равно нулю;
  • любая непустая строка;
  • любой непустой объект.

К ложным значениям в Python относятся:

  • ноль (0);
  • None;
  • пустая строка;
  • пустой объект.

К примеру, чтобы узнать пустой список или нет, можно так:

Пример
l = [1, 2, 3, 4, 5]
if (l):
    print("Не пуст")
else:
    print("Пуст")       

Операторы сравнения уже были рассмотрены в этой практике. Чтобы не возвращаться назад, вот они:

  1. a == b – проверяет, равны ли оба операнда и возвращает истину, если это так;
  2. a != b – проверяет, равны ли оба операнда и возвращает истину, если они различны;
  3. a > b – возвращает истину, если левый операнд (a), больше правого операнда (b);
  4. a < b – возвращает истину, если левый операнд (a), меньше правого операнда (b);
  5. a >= b – возвращает истину, если левый операнд (a), больше или равен правому операнду (b);
  6. a <= b – возвращает истину, если левый операнд (a), меньше или равен правому операнду (b).

Обратите внимание, равенство проверяется при помощи двойного символа равно. Одни символ равно обозначает операцию присвоения. Еще один пример с операторами сравнения:

Пример
if a > b:
    print("a больше b")
elif a < b:
    print("b больше a")
else:
    print("a и b равны")       

Кстати, круглые скобки, которые использовались в условиях первого примера, необязательны, т.е. можно записывать условие без скобок.

Оператор in

В Python есть удобный оператор in, позволяющий определить наличие элемента в последовательности, например, в строке или списке:

Пример
'a' in 'abcdef' # => True
'Hello' in 'Hello, World!' # => True
1 in [1, 2, 3, 4, 5] # => True       

Операторы and, or и not

Булевы операторы and, or и not не возвращают булево значение, они всегда вернут один из операндов, например:

Пример
'a' and 'b' # => b
'a' and 'b' and 'c' # => c       

При использовании оператора and, значения проверяются слева направо. Мы уже выяснили, что является истинной, а что ложью. Символы a, b, c относятся к «любой непустой строке». Итак, если все элементы истинны, то будет возвращен последний элемент.

Пример
0 and 'b' # => 0
'a' and [] and 'c' # => []       

В примере выше есть ложные объекты. В таком случае оператор and вернет первый ложный объект. В случае с оператором or, будет возвращаться первый истинный объект и, только если все ложные, вернет последний ложный объект.

Еще раз скажу: операторы and и or возвращают не True и False, а один из операндов (хотя, в условной конструкции это будет значить одно и то же).

Оператор not инвертирует логическое значение операнда. Если операнд ложен, то будет возвращено True, иначе False. Оператор not в Python возвращает True или False, а не операнд:

Пример
not 0 and 'b' # => b
'a' and not []# => True       

Вложенные условные инструкции

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

Пример
if (a > 0): # 0 пробелов
    if (a < 3): # 4 пробела или одна табуляция
        if (a == 2): # 8 пробелов или две табуляции
            ... # 12 пробелов или три табуляции     

В этом уроке мы научились использовать условную инструкцию if-elif-else в Python, вспомнили перечень истинных и ложных объектов и познакомились с операторами in, and, or и not, которые могут существенно упростить написание кода.

<
×
>
Раздел «Знакомство с Python»
Урок 1.1. Первое знакомство с Python
Тест 1.2. Небольшой первый тест
Урок 1.3. Переменные и комментарии в Python
Тест 1.4. Тест по основным понятиям и работе с сайтом
Урок 2.1. Погружение в Python
Тест 2.2. Второй вводный тест по Python
Урок 2.3. Типы данных в Python
Урок 2.4. Форматирование строк в Python
Урок 2.5. Условная инструкция if-elif-else в Python
Вы здесь
Урок 2.6. Преобразование и проверка типов в Python
Урок 2.7. Вызов методов цепочкой в Python
Урок 3.1. Первое знакомство с циклами в Python
Тест 3.2. Тест по циклам Python
Урок 4.1. Генерируем случайные числа на Python
Тест 4.2. Тест по модулю random Python
Урок 5.1. Структуры данных в Python
Тест 5.2. Тест по структурам Python
Урок 6.1. Списки в Python
Тест 6.2. Тест по спискам Python
Урок 6.3. Изменение списка на месте в Python
Урок 6.4. Дополнительно про списки в Python
Урок 6.5. Конкатенация и сортировка списков в Python
Тест 6.6. Заключительный тест по спискам в Python
Урок 7.1. Словари в Python
Тест 7.2. Тест по словарям Python
Урок 7.3. Словари и списки: еще глубже
Урок 7.4. Перебор элементов словаря в Python
Урок 7.5. Внутреннее устройство и сортировка словаря в Python
Урок 7.6. Методы словарей и функция len() в Python
Тест 7.7. Заключительный тест по словарям
Урок 8.1. Множества в Python
Урок 8.2. Методы и особенности множеств в Python
Урок 8.3. Отношения между множествами и операции над ними
Тест 8.4. Тест по методам множеств в Python
Тест 8.5. Тест по операциям над множествами в Python
Урок 9.1. Кортежи в Python
Урок 9.2. Более подробно о кортежах в Python
Тест 9.3. Тест по кортежам в Python
Урок 10.1. Контроль хода выполнения программы в Python
Урок 10.2. Цикл while в Python
Урок 10.3. Операторы break, continue и pass в Python
Урок 10.4. Циклы for/else и while/else в Python
Урок 10.5. Обработка исключений (try/except) в Python
Тест 10.6. Тест по циклам и управляющим конструкциям
Тест 10.7. Тест по обработке исключений
Урок 10.8. Что дальше?