if elif else
Обязательная часть инструкции, должна предшествовать другим частям.
Эта часть проверяет выражение справа от себя на истинность.
if a:
print('a - истина')
Обратите внимание, что в Питоне принято использовать укороченную форму проверки ( if a: ), вместо часто избыточной полной ( if a == True: ).
elif
Необязательная часть инструкции. Должна следовать за if , либо другой elif .
Позволяет указать альтернативное условие, которое требуется проверить.
Данное ключевое слово в других языках используется в избыточно длинной форме else if .
else
Необязательная заключительная часть инструкции. Должна следовать за if , либо elif .
Позволяет указать ветвь исполнения, которая должна быть активирована, если не подошли условия, указанные в предшествующих if и elif .
if x < 0:
print('Отрицательное число')
elif x == 0:
print('Нуль')
elif x == 1:
print('Единица')
else:
print('Другое положительное число')
Однострочная форма
Для простых случаев может быть полезна однострочная форма инструкции:
my_var = 'one' if x == 1 else 'other'
# my_var укажет на `one` если x равно 1, иначе на `other`
Проверка условий, конструкция if/elif/else в Python
Условный оператор if/elif/else, ветвление кода программы
Возможно, самый известный тип инструкций — это конструкция if/elif/else . Часто возникает необходимость, чтобы некоторый код выполнялся только при соблюдении определенного условия или код подлежащий выполнению, должен выбираться исходя из выполнения одного из нескольких взаимоисключающих условий.
Например:
>>> x = int(input("Please enter an integer: ")) # Please enter an integer: 42 >>> if x 0: . x = 0 . print('Negative changed to zero') . elif x == 0: . print('Zero') . elif x == 1: . print('Single') . else: . print('More') # More
Ключевое слово elif является сокращением от else if . Инструкции elif и else могут отсутствовать и не являются обязательными. Инструкция elif может повторяться сколько угодно раз if/elif/else . Такая последовательность инструкций elif является заменой для конструкции switch или case , которые есть в других языках программирования.
Составная инструкция if , elif и else обеспечивает условное выполнение блоков инструкций.
Она имеет следующий синтаксис:
if выражение: блок кода elif выражение: блок кода elif выражение: блок кода . . else: блок кода
Конструкция if вычисляет и оценивает выражения одно за другим, пока одно из них не окажется истинным, затем выполняется соответствующий блок кода . После выполнения блока кода первого истинного ( True ) выражения, последующие инструкции elif / else не вычисляются и не оцениваются, а блоки кода в них не выполняется. Если все выражения ложны ( False ), выполняется блок кода инструкции else , если он присутствует.
В предложениях if и elif в качестве условия можно использовать любое выражение Python. В подобных случаях говорят, что условие используется в логическом контексте. В логическом контексте любое выражение рассматривается как истинное или ложное. Любое ненулевое число или любой непустой контейнер (строка, кортеж, список, словарь, множество) расценивается как истинное значение. Нуль (любого числового типа), None и пустой контейнер расцениваются как ложные значения. Для тестирования значения x в логическом контекстеиспользуйте следующий стиль написания кода:
if x:
Это наиболее ясная и соответствующая духу Python форма кода.
Примеры if/elif/else конструкций
Использование None в конструкции if :
a = None if a is not None: print('a НЕ равно None') else: print('a равно None')
Использование False и True в конструкции if :
bul = False if bul: print('bul = True') else: print('bul = False')
Использование integer числа 0 в конструкции if :
number = 0 if number: print('number не равно 0') else: print('number = 0')
Использование числовых сравнений в конструкции if :
a = 10 b = 20 if a != b and a > b: print('a не равно b и a больше b') else: print('a не равно b и a меньше b')
Вложенные конструкции if :
a = 15 b = 3 if a != b if a > b: print('a больше b') else: print('a меньше b') else: print('a равно b')
Проверка наличия слова в строке str с помощью конструкции if :
string1 = 'Привет мир' string2 = 'мир' if string2 in string1: print('Слово "мир" присутствует в строке "Привет мир"') else: print('Слово "мир" отсутствует в строке "Привет мир"')
Проверка вхождения элемента в список list с помощью конструкции if :
a = 'bc' lst = ['ac', 'bc', 0, 1, 3, 'abc'] if a in lst: print('Значение "bc" входит в список', lst) else: print('Значение "bc" не входит в список', lst)
Проверка вхождения элемента в кортеж tuple с помощью конструкции if :
a = 'bc' tpl = ('ac', 'bc', 0, 1, 3, 'abc') if a in tpl: print('Значение "bc" входит в кортеж', tpl) else: print('Значение "bc" не входит в кортеж', tpl)
Проверка вхождения элемента в множество set с помощью конструкции if :
a = 'bc' set_ = 'ac', 'bc', 0, 1, 3, 'abc'> if a in set_: print('Значение "bc" входит в множество', set_) else: print('Значение "bc" не входит в множество', set_)
Проверка наличия ключа key в словаре dict с помощью конструкции if :
key = 'bc' dct = 'ac':None, 'bc':False, '0':0, '1':3, '3':1, 'abc':True> if key in dct: print('Ключ "bc" присутствует в словаре', dct) else: print('Ключ "bc" отсутствует в словаре', dct)
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Проверка условий, конструкция if/elif/else
- Конструкция if/else в одну строку
- Имитация оператора switch/case
- while, цикл по условию
- Цикл for
- Числовые последовательности для цикла Python
- Практическое применение for/in/else циклов
- Инструкции break, continue и блок else в циклах Python
- Оператор pass
- Конструкция match/case, сопоставление с образцом
Инструкция if-elif-else, проверка истинности, трехместное выражение if/else

Условная инструкция if-elif-else (её ещё иногда называют оператором ветвления) — основной инструмент выбора в Python. Проще говоря, она выбирает, какое действие следует выполнить, в зависимости от значения переменных в момент проверки условия.
Синтаксис инструкции if
Сначала записывается часть if с условным выражением, далее могут следовать одна или более необязательных частей elif, и, наконец, необязательная часть else. Общая форма записи условной инструкции if выглядит следующим образом:
Простой пример (напечатает 'true', так как 1 - истина):
Чуть более сложный пример (его результат будет зависеть от того, что ввёл пользователь):
Конструкция с несколькими elif может также служить отличной заменой конструкции switch - case в других языках программирования.
Проверка истинности в Python
- Любое число, не равное 0, или непустой объект — истина.
- Числа, равные 0, пустые объекты и значение None — ложь
- Операции сравнения применяются к структурам данных рекурсивно
- Операции сравнения возвращают True или False
- Логические операторы and и or возвращают истинный или ложный объект-операнд
Истина, если оба значения X и Y истинны.
Истина, если хотя бы одно из значений X или Y истинно.
Истина, если X ложно.
Трехместное выражение if/else
довольно короткая, но, тем не менее, занимает целых 4 строки. Специально для таких случаев и было придумано выражение if/else:
В данной инструкции интерпретатор выполнит выражение Y, если X истинно, в противном случае выполнится выражение Z.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Python: Конструкция else + if = elif
Функция get_type_of_sentence() различает только вопросительные и обычные предложения. Добавим в нее поддержку восклицательных предложений:
def get_type_of_sentence(sentence): last_char = sentence[-1] if last_char == '?': sentence_type = 'question' if last_char == '!': sentence_type = 'exclamation' else: sentence_type = 'normal' return 'Sentence is ' + sentence_type print(get_type_of_sentence('Who?')) # => 'Sentence is normal' print(get_type_of_sentence('No')) # => 'Sentence is normal' print(get_type_of_sentence('No!')) # => 'Sentence is exclamation'
Мы добавили проверку восклицательных предложений — exclamation. Технически эта функция работает, но вопросительные предложения трактует неверно. Еще в ней есть проблемы с точки зрения семантики:
- Наличие восклицательного знака проверяется в любом случае, даже если уже обнаружился вопросительный знак
- Ветка else описана для второго условия, но не для первого. Поэтому вопросительное предложение становится "normal"
Чтобы исправить ситуацию, воспользуемся еще одной возможностью условной конструкции:
def get_type_of_sentence(sentence): last_char = sentence[-1] if last_char == '?': sentence_type = 'question' elif last_char == '!': sentence_type = 'exclamation' else: sentence_type = 'normal' return 'Sentence is ' + sentence_type print(get_type_of_sentence('Who?')) # => 'Sentence is question' print(get_type_of_sentence('No')) # => 'Sentence is normal' print(get_type_of_sentence('No!')) # => 'Sentence is exclamation'
Теперь все условия выстроились в единую конструкцию. elif означает — «если не выполнено предыдущее условие, но выполнено текущее». Получается такая схема:
- если последняя буква ? , то 'question'
- если последняя буква ! , то 'exclamation'
- остальные варианты — 'normal'
Выполнится только один из блоков кода, который относится ко всей конструкции if .
Задание
На электронной карте Вестероса, которую реализовал Сэм, союзники Старков отображены зелёным кружком, враги — красным, а нейтральные семьи — серым.
Напишите для Сэма функцию who_is_this_house_to_starks() , которая принимает на вход фамилию семьи и возвращает одно из трёх значений: 'friend' , 'enemy' , 'neutral' .
- Друзья ( 'friend' ): 'Karstark' , 'Tully'
- Враги ( 'enemy' ): 'Lannister' , 'Frey'
- Любые другие семьи считаются нейтральными ( 'neutral' )
print(who_is_this_house_to_starks('Karstark')) # => 'friend' print(who_is_this_house_to_starks('Frey')) # => 'enemy' print(who_is_this_house_to_starks('Joar')) # => 'neutral' print(who_is_this_house_to_starks('Ivanov')) # => 'neutral'
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Определения
- else + if = elif — способ задать несколько альтернативных условий.