Условные конструкции используют условные выражения и в зависимости от их значения направляют выполнение программы по одному из путей. Одна из таких конструкций - это конструкция if. Она имеет следующее формальное определение:
if логическое_выражение: инструкции [elif логическое выражение: инструкции] [else: инструкции]
В самом простом виде после ключевого слова if идет логическое выражение. И если это логическое выражение возвращает True,
то выполняется последующий блок инструкций, каждая из которых должна начинаться с новой строки и должна иметь отступы от начала выражения if
(отступ желательно делать в 4 пробела или то количество пробелов, которое кратно 4):
language = "english" if language == "english": print("Hello") print("End")
Поскольку в данном случае значение переменной language равно "english", то будет выполняться блок if, который содержит только одну инструкцию - print("Hello")
.
В итоге консоль выведет следующие строки:
Hello End
Обратите внимание в коде на последнюю строку, которая выводит сообщение "End". Она не имеет отступов от начала строки, поэтому она не принадлежит к блоку if и будет выполняться в любом случае, даже если выражение в конструкции if возвратит False.
Но если бы мы поставили бы отступы, то она также принадлежала бы к конструкции if:
language = "english" if language == "english": print("Hello") print("End")
Если вдруг нам надо определить альтернативное решение на тот случай, если выражение в if возвратит False, то мы можем использовать блок else:
language = "russian" if language == "english": print("Hello") else: print("Привет") print("End")
Если выражение language == "english"
возвращает True, то выполняется блок if, иначе выполняется блок else.
И поскольку в данном случае условие language == "english"
возвращает False, то будут выполняться инструкция из блока else
.
Причем инструкции блока else также должны имет отступы от начала строки. Например, в примере выше print("End")
не имеет отступа, поэтому она не входит в блок else
и будет выполнятьься вне зависимости, чему равно условие language == "english"
.
То есть консоль нам выведет следующие строки:
Привет End
Блок else также может иметь несколько инструкций, которые должны иметь отступ от начала строки:
language = "russian" if language == "english": print("Hello") print("World") else: print("Привет") print("мир")
Если необходимо ввести несколько альтернативных условий, то можно использовать дополнительные блоки elif, после которого идет блок инструкций.
language = "german" if language == "english": print("Hello") print("World") elif language == "german": print("Hallo") print("Welt") else: print("Привет") print("мир")
Сначала Python проверяет выражение if
. Если оно равно True, то выполняются инструкции из блока if. Если это условие возвращает False, то Python
проверяет выражение из elif
.
Если выражение после elif
равно True
, то выполняются инструкции из блока elif
. Но если оно равно
False
то выполняются инструкции из блока else
При необходимости можно определить несколько блоков elif
для разных условий. Например:
language = "german" if language == "english": print("Hello") elif language == "german": print("Hallo") elif language == "french": print("Salut") else: print("Привет")
Конструкция if в свою очередь сама может иметь вложенные конструкции if:
language = "english" daytime = "morning" if language == "english": print("English") if daytime == "morning": print("Good morning") else: print("Good evening")
Здесь конструкция if содержит вложенную конструкцию if/else. То есть если переменная language равна "english", тогда вложенная конструкция if/else дополнительно проверяет значение переменной daytime - равна ли она строке "morning" ли нет. И в данном случае мы получим следующий консольный вывод:
English Good morning
Стоит учитывать, что вложенные выражения if также должны начинаться с отступов, а инструкции во вложенных конструкциях также должны иметь отступы. Отступы, расставленные не должным образом, могут изменить логику программы. Так, предыдущий пример НЕ аналогичен следующему:
language = "english" daytime = "morning" if language == "english": print("English") if daytime == "morning": print("Good morning") else: print("Good evening")
Подобным образом можно размещать вложенные конструкции if/elif/else в блоках elif и else:
language = "russian" daytime = "morning" if language == "english": if daytime == "morning": print("Good morning") else: print("Good evening") else: if daytime == "morning": print("Доброе утро") else: print("Добрый вечер")