Условия в Python

if

Загадайте какое-нибудь животное. Загадали? Теперь напишем программу, которая будет его отгадывать.

Первая попытка программы угадать животное:

print("Это кошка? (да/нет)")
answer = input()

Дальше программа должна проверить содержание answer и, если ответ «да», показать сообщение. Вот как реализовать это в коде:

if answer == 'да':
    print('Ура!')

Вот что здесь происходит

  1. Python берёт значение, которое лежит в переменной answer.
  2. Проверяет, равно ли это значение строке да.
  3. Если равно, выполняет инструкцию print.

С точки зрения синтаксиса в примере выше важны две вещи:

  1. После условия ставится двоеточие: if answer == 'да':
  2. Перед print('Ура') ставится 4 пробела.

Будьте внимательны с = и ==:

a = b  # положи в переменную a значение b
a == b  # сравни a и b

Запустите код ниже и посмотрите, что происходит, если ввести «да» и если ввести «нет»:

Попробуйте изменить код так, чтобы после «ура» он выводил ещё что-нибудь. Заметьте, как наличие отступа в 4 пробела меняет поведение программы.

else

Если пользователь вводит «нет», программа молча завершается. Было бы лучше дать пользователю понять, что он победил:

print("Это кошка? (да/нет)")
answer = input()
if answer == 'да':
    print('Ура!')
else:
    print('Тогда я не знаю')

Команда print('Тогда я не знаю') исполнится только в случае, если пользователь ввёл строку, не равную «да». Попробуйте:

elif

С программой выше есть проблема: если ввести что-то вроде «Да, конечно!», она всё равно выведет Тогда я не знаю. На деле же программа просто не поняла, что сказал ей пользователь.

Исправим ошибку: будем выводить Тогда я не знаю только если строка равна «нет»:

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

Чисто гипотетически, elif можно наслаивать бесконечно:

if a == b:
    # ...
elif a == c:
    # ...
elif a == d:
    # ...
# ... 

Вложенные if

Сейчас программа делает всего одну попытку угадать животное. Давайте добавим вторую попытку:

print("Это кошка? (да/нет)")
answer = input()
if answer == 'да':
    print('Ура!')
elif answer == 'нет':
    # ---
    print("Это собака? (да/нет)")
    answer = input()
    if answer == 'да':
        print('Ура!')
    elif answer == 'нет':
        print('Тогда я не знаю')
    else:
        print('Мне не понятно')
    # ---    
else:
    print('Мне не понятно')

Как вы видите, чтобы вложить один if внутрь другого, достаточно сделать верный отступ. Потренируйтесь, добавьте ещё один вопрос программе самостоятельно:

Предикаты

Выражение, которое идёт внутри if , называют предикатом. В статье «Предикаты» подробнее рассматривается работа с ними.

Альтернативные источники

Если мы не смогли объяснить материал, напишите нам или попробуйте альтернативные источники по теме:


Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.