Ключевые вопросы параграфа
- Что такое условный оператор в Python и как он работает?
- Как записывать простые и сложные условия с помощью if, elif, else?
- Какие логические операции используются для объединения условий?
- Чем отличается сравнение строк от сравнения чисел?
- Что такое match-case и как он помогает обрабатывать значения?
- Какие встроенные функции могут быть полезны при проверке условий?
Условный оператор в Python
Иногда программа должна выполнять разные действия в зависимости от ситуации. Например, если пользователь ввёл положительное число — показать одно сообщение, если отрицательное — другое. Для таких случаев в Python используется условный оператор
.
Допустим, пользователь вводит температуру на улице за два дня — вчера и сегодня. Программа должна определить, стало теплее, холоднее или температура не изменилась:
1yesterday_temp = int(input())
2today_temp = int(input())
3if today_temp > yesterday_temp:
4 print("Сегодня теплее, чем вчера.")
5elif today_temp < yesterday_temp:
6 print("Сегодня холоднее, чем вчера.")
7else:
8 print("Сегодня такая же температура, как вчера.")
Как это работает:
if
— ключевое слово, с которого начинается условная конструкция.- После него указывается условие, которое должно быть истинным
(True)
, чтобы код внутри блока выполнился. - Блок кода, который должен выполняться при соблюдении условия, обязательно записывается с отступом.
elif
(сокращение отelse if
) проверяет другое условие, если первое не выполнилось.else
срабатывает, если ни одно из условий не оказалось истинным.
Структура конструкций с if
, elif
, else
Чтобы программа могла принимать решения, в Python используется конструкция if
. Она проверяет условие и выполняет код, если оно истинно. При необходимости можно добавить дополнительные варианты с помощью elif
и else
.
Условие записывается после оператора if
и всегда должно возвращать логическое значение — True
(истина) или False
(ложь).
1if условие: # код, который выполнится, если условие истинно
2elif другое_условие: # код, если первое условие не сработало, но это — истинно
3else: # код, если ни одно из условий не сработало
Важные правила:
if
— начинается с условия, которое должно возвращатьTrue
илиFalse
.- После условия обязательно ставится двоеточие.
- Код, связанный с этим условием, пишется с отступом в четыре пробела— это и есть тело условия.
elif
(сокращение отelse if
) проверяет альтернативное условие, еслиif
не сработал. Можно использовать несколькоelif
подряд.else
не содержит условия и выполняется, если ни одно из предыдущих условий не оказалось истинным. Он не обязателен.
Пример:
1if x > 0:
2 print("Число положительное.")
3elif x < 0:
4 print("Число отрицательное.")
5else:
6 print("Это ноль.")
Примечание
Условная конструкция может состоять только из if
, либо включать любое количество elif
, и, при необходимости, завершаться else
. Использование elif
и else
— не обязательно, но они помогают обрабатывать разные варианты поведения.
Что может быть условием
Условием может быть результат
операции сравнения. Python поддерживает привычные математические операторы:
>
(больше);>=
(больше или равно);<
(меньше);<=
(меньше или равно);==
(равно);!=
(не равно).
Операции для объединения условий
Иногда одного условия недостаточно. Например, нужно проверить сразу два условия — и чтобы оба были истинными. В таких случаях используются логические операторы
.
Основные логические операторы в Python:
Оператор |
Назначение |
Пример |
|
Логическое |
|
|
Логическое |
|
|
Логическое |
|
Таблица истинности
Вот как работают логические операторы с булевыми значениями:
x |
y |
not x |
x or y |
x and y |
False |
False |
True |
False |
False |
False |
True |
True |
True |
False |
True |
False |
False |
True |
False |
True |
True |
False |
True |
True |
Пример: проверка букв
Допустим, пользователь должен ввести первую и последнюю буквы русского алфавита. Проверим, что это действительно «а» и «я» — в любом регистре:
1print("Введите первую и последнюю буквы русского алфавита.")
2first_letter = input()
3last_letter = input()
4if (first_letter == "а" or first_letter == "А") and (
5 last_letter == "я" or last_letter == "Я"):
6 print("Верно.")
7else:
8 print("Неверно.")
Сокращённая запись условий
В Python можно использовать двойное неравенство, чтобы записывать сложные условия компактно. Запись
1if x >= 0 and x < 100:
2 ...
можно заменить на:
1if 0 <= x < 100:
2 ...
В Python можно сравнивать не только числа, но и строки. Однако строки сравниваются не по значению как число, а посимвольно, по коду каждого символа.
Сравнение строк
Python сравнивает строки в лексикографическом порядке
— по таблице кодировки символов (обычно UTF-8). Это значит:
- Сначала сравниваются первые символы строк;
- Если они совпадают — сравниваются вторые, и так далее;
- Сравнение останавливается, как только символы отличаются.
Компьютер изначально работает только с двоичными числами. Поэтому для работы с символами им назначаются коды — числа, а сами таблицы соответствия символов и кодов называются таблицами кодировки. Кодировок существует достаточно много, одной из самых популярных на данный момент является UTF-8
.
Например, сравним две односимвольные строки:
1letter_1 = "t"
2letter_2 = "w"
3print(letter_1 > letter_2)
Программа выведет False
, поскольку символ t стоит в таблице кодировки раньше, чем w (как и по алфавиту, то есть лексикографически).
Чтобы убедиться в этом, можно использовать встроенную функцию ord()
, которая возвращает код символа из таблицы кодировки:
1print(ord("t"), ord("w"))
В консоли отобразится:
116 119
Поскольку 116 меньше 119, в предыдущем примере мы и получили False
.
Чтобы получить символ по его коду, необходимо вызвать встроенную функцию chr()
с соответствующим кодом:
1print(chr(116), chr(119))
В результате увидим:
t w
В таблице кодировки БОЛЬШИЕ
и маленькие
буквы — это различные символы с разными кодами (из разных диапазонов). Поэтому для корректного сравнения строки должны быть в одном регистре.
1print("a" > "A") # True, потому что код “a” больше
Если вы хотите сравнивать строки без учёта регистра, сначала приведите их к одному регистру:
1text_1 = "Привет"
2text_2 = "привет"
3print(text_1.lower() == text_2.lower()) # True
Проверка вхождения с in
Чтобы проверить, содержит ли строка нужное слово или часть слова, используется оператор in
:
1text = input()
2if "добр" in text:
3 print("Встретилось 'доброе' слово.")
4else:
5 print("Добрых слов не найдено.")
Оператор in
можно использовать и с числами, списками, кортежами — но об этом позже.
Match-case
С версии Python 3.10
появился оператор match — это современный способ сравнивать значения с заранее заданными шаблонами. Он напоминает конструкцию switch
из других языков программирования (например, C++
или JavaScript
).
Пример: светофор
1color = input()
2match color:
3 case 'красный' | 'жёлтый':
4 print('Стоп.')
5 case 'зелёный':
6 print('Можно ехать.')
7 case _:
8 print('Некорректное значение.')
Обратите внимание, что для проверки выполнения условия ИЛИ
в операторе case
не используется логическая операция or
. Её нельзя использовать, поскольку она применяется для переменных логического типа, а в примере перечисляются значения-строки. Вместо неё мы используем специальный оператор |
.
Последний оператор case
выполняется всегда и сработает в случае, если ни одно из предыдущих условий не сработало.
Проверка условий при помощи встроенных функций
Иногда при проверке условий нам нужно получить дополнительную информацию — например, длину строки или наибольшее из значений. В таких случаях полезны встроенные функции Python.
Рассмотрим применение встроенных функций в следующем примере. Обратите внимание на строки, начинающиеся со знака #
. Так в Python обозначаются комментарии — линии, которые не выполняются интерпретатором, а служат для пояснения кода.
1m = 12
2n = 19
3k = 25
4
5# максимальное число
6print(max(m, n, k))
7
8line_1 = "m"
9line_2 = "n"
10line_3 = "k"
11
12# минимальная лексикографически строка
13print(min(line_1, line_2, line_3))
14
15# количество цифр в числе 2 в степени 2022
16print(len(str(2 ** 2022)))
Ещё по теме
- Оператор
match
также используется для так называемой проверки шаблона (pattern matching), почитать о которой можно в этом материале. - Все доступные в Python встроенные функции можно посмотреть на этой странице.
✅ У вас получилось разобраться с условными операторами?
Оцените, насколько это было понятно — ваша обратная связь помогает нам делать хендбук лучше.
👉 Оценить этот параграф
Что дальше
Теперь, когда вы научились использовать условные операторы, логические выражения и встроенные функции для принятия решений, пора перейти к следующей возможности языка — повторению действий.
В следующем параграфе вы узнаете:
- что такое циклы и зачем они нужны;
- как работает цикл
while
и как задать условие повтора; - как использовать цикл
for
для перебора значений; - как управлять выполнением цикла с помощью
break
,continue
иelse
.
После этого вы сможете создавать программы, которые выполняют повторяющиеся действия — от простых счётчиков до анализа списков.
А пока — закрепите материал на практике:
- Отметьте, что урок прочитан при помощи кнопки ниже.
- Пройдите мини-квиз, чтобы проверить, насколько хорошо вы разобрались с условиями и логикой.
- Перейдите к задачам этого параграфа.
- Загляните в гайд по системе проверки, если вы здесь впервые.
Хотите обсудить, задать вопрос или не понимаете, почему код не работает? Мы всё предусмотрели — вступайте в сообщество Хендбука! Там студенты помогают друг другу разобраться.
Ключевые выводы параграфа
- Условные операторы
if
,elif
,else
позволяют выполнять разные действия в зависимости от условий. - Логические операции
and
,or
,not
помогают объединять несколько условий. - Строки сравниваются по кодировке символов; для правильного сравнения регистр нужно приводить к одному виду.
- Оператор
in
проверяет вхождение элементов в строки и коллекции. - Конструкция match-case и встроенные функции, такие как
len()
,max()
,min()
,abs()
, расширяют возможности проверки условий.