Условия в Python
if
Загадайте какое-нибудь животное. Загадали? Теперь напишем программу, которая будет его отгадывать.
Первая попытка программы угадать животное:
print("Это кошка? (да/нет)")
answer = input()
Дальше программа должна проверить содержание answer
и, если ответ «да», показать сообщение. Вот как реализовать это в коде:
if answer == 'да':
print('Ура!')
Вот что здесь происходит
- Python берёт значение, которое лежит в переменной
answer
. - Проверяет, равно ли это значение строке
да
. - Если равно, выполняет инструкцию
print
.
С точки зрения синтаксиса в примере выше важны две вещи:
- После условия ставится двоеточие:
if answer == 'да':
- Перед
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
, называют предикатом. В статье «Предикаты» подробнее рассматривается работа с ними.
Альтернативные источники
Если мы не смогли объяснить материал, напишите нам или попробуйте альтернативные источники по теме: