Перейти к содержанию
Educora
Начальный15 мин4 / 42

Условия: if, elif, else

Научи программу принимать решения: операторы сравнения, if/elif/else и логические and, or, not.

Проверь себя
В этом уроке ты узнаешь
  • Получать True или False с помощью операторов сравнения
  • Писать ветвящиеся программы с if, elif и else
  • Объединять условия с помощью and, or и not

Каждый день мы принимаем десятки решений: если идёт дождь, берём зонт; если на светофоре красный, ждём; если домашнее задание сделано, идём гулять. Программы работают так же: проверяют ситуацию и в зависимости от результата выполняют разные действия. В Python для этого есть условные операторы.

Операторы сравнения

В основе каждого решения лежит вопрос, на который можно ответить «да» или «нет». В Python такие вопросы записывают с помощью операторов сравнения, а ответ всегда логический: True (истина) или False (ложь).

ОператорЗначениеПример
==равно5 == 5 → True
!=не равно5 != 3 → True
>больше2 > 7 → False
<меньше2 < 7 → True
>=больше или равно7 >= 7 → True
<=меньше или равно8 <= 7 → False
Python
age = 14
print(age > 12)
print(age == 18)
print(age != 18)
print('Baku' == 'baku')
print(5 <= 5)
▸ Ожидаемый результат
True
False
True
False
True

Оператор if

После слова if пишется условие, а в конце ставится двоеточие (:). Если условие равно True, выполняются строки под ним с отступом; если False, Python их пропускает.

Python
temperature = 32
if temperature > 30:
    print('It is hot today!')
    print('Drink more water.')
print('Have a nice day.')
▸ Ожидаемый результат
It is hot today!
Drink more water.
Have a nice day.
Измени temperature на 20 и посмотри, как изменится результат.
Определение
Отступ

Пробелы в начале строки. В Python отступ показывает, какие строки образуют один блок. Обычно используют 4 пробела. Последняя строка в примере не имеет отступа, поэтому выполняется всегда, независимо от условия.

else и elif

else («иначе») указывает, что делать, если условие ложно. Например, проверим, чётное ли число, по остатку от деления на 2:

Python
number = 7
if number % 2 == 0:
    print(number, 'is even')
else:
    print(number, 'is odd')
▸ Ожидаемый результат
7 is odd

Когда вариантов больше двух, на помощь приходит elif (сокращение от «else if»). Python проверяет условия сверху вниз и выполняет блок первого истинного — остальные он уже не смотрит. Если ни одно не истинно, выполняется блок else.

Python
score = 78
if score >= 90:
    grade = 'Excellent'
elif score >= 75:
    grade = 'Good'
elif score >= 50:
    grade = 'Satisfactory'
else:
    grade = 'Try again'
print(f'Score {score}: {grade}')
▸ Ожидаемый результат
Score 78: Good
78 больше и 75, и 50, но срабатывает только первое истинное условие — score >= 75.

and, or, not

  • A and B — True, когда истинны оба условия.
  • A or B — True, когда истинно хотя бы одно условие.
  • not A — меняет условие на противоположное: True становится False и наоборот.
Python
age = 15
has_ticket = True
is_weekend = False

if age >= 12 and has_ticket:
    print('You can watch the film.')

if is_weekend or age < 7:
    print('Free entry!')
else:
    print('Entry costs 5 AZN.')

if not is_weekend:
    print('See you after school!')
▸ Ожидаемый результат
You can watch the film.
Entry costs 5 AZN.
See you after school!
Интерактив
Загрузка симуляции…
Оператор and в Python работает как вентиль AND. Выбери также OR и NOT и сравни их таблицы.
Пример: високосный год

Год високосный, если делится на 4, но годы, кратные 100, високосные, только если делятся и на 400. Напиши условие, которое проверяет, високосный ли 2024 год.

Показать решение
Часть «делится на 4 и не делится на 100» записываем через and: year % 4 == 0 and year % 100 != 0.
Часть «или делится на 400» добавляем через or: or year % 400 == 0.
Скобки объединяют первую часть. Результат — в коде ниже.
Python
year = 2024
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    print(year, 'is a leap year')
else:
    print(year, 'is not a leap year')
▸ Ожидаемый результат
2024 is a leap year
Проверь также 1900 и 2000 годы: первый не високосный, а второй — високосный.
Задание

Посмотри на number: если число больше нуля, выведи positive, если меньше — negative, если равно нулю — zero. Используй if, elif и else. Меняй значение number, чтобы проверить каждую ветку.

Задание · Python
number = -7
# print positive, negative or zero
▸ Ожидаемый результат
negative
Задание

У Айсель score = 83 балла, и домашнее задание она сделала (homework_done = True). Сначала выведи оценку: A, если баллов не меньше 90, B — не меньше 75, C — не меньше 50, иначе F. Затем, если баллов не меньше 80 и домашнее задание сделано, выведи на отдельной строке Bonus star!.

Задание · Python
score = 83
homework_done = True
# 1) print A, B, C or F
# 2) print Bonus star! if score >= 80 and the homework is done
▸ Ожидаемый результат
B
Bonus star!

Главное

  • Операторы сравнения (==, !=, <, >, <=, >=) возвращают True или False.
  • После условия if ставится двоеточие, а его блок пишется с отступом в 4 пробела.
  • В цепочке elif выполняется блок только первого истинного условия; если ни одно не истинно — else.
  • and требует, чтобы были истинны оба условия, or — хотя бы одно, а not меняет условие на противоположное.
  • = — присваивание, == — сравнение.

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Каков результат выражения 10 != 10?