- Определять результат (
True/False) операций сравнения, в том числе сравнения строк. - Записывать полную и неполную форму
if, цепочкиelifи вложенные условия и прослеживать, какая ветвь выполняется. - Вычислять составные условия с
and,or,notс учётом приоритета. - Писать программы, решающие задачи с периодическим узором через условия с остатком (
n % k).
Банкомат выдаёт деньги, если PIN-код набран верно, и предупреждает, если неверно; на светофоре мы идём на зелёный и стоим на красный. Программа тоже должна выбирать, что делать, в зависимости от ситуации. На блок-схеме это ветвление, изображаемое ромбом (см. «Алгоритмы и блок-схемы» и «Разветвляющиеся алгоритмы»), а в Python оно записывается условным оператором if. В каждом варианте вступительных экзаменов 2025–2026 годов на условный оператор приходилось 2–3 задания, иногда одно из них было письменной программой.
Операции сравнения: когда условие истинно?
Условие — выражение, значение которого True (истина) или False (ложь). Простейшие условия строятся с помощью операций сравнения. Внимание: равенство записывается двумя знаками — ==, потому что одиночный = означает присваивание.
| Операция | Смысл | Пример |
|---|---|---|
== | равно | 7 == 7 → True |
!= | не равно | 7 != 7 → False |
< > | меньше, больше | 3 > 8 → False |
<= >= | меньше или равно, больше или равно | 8 >= 8 → True |
Строки сравниваются посимвольно, по кодам символов — как слова в словаре: 'apple' < 'apricot' истинно, потому что в третьем символе p идёт раньше r. Коды заглавных букв меньше кодов строчных, поэтому 'Z' < 'a' тоже истинно. Строки из цифр тоже сравниваются посимвольно: '10' < '9' истинно ('1' < '9'), хотя 10 > 9. Число никогда не равно строке: 5 == '5' → False. Python допускает и двойные неравенства: запись 10 <= n <= 99 означает «n — двузначное число».
Значение условия — обычное значение: его можно напечатать (print(7 > 3) → True) и сохранить в переменной: even = n % 2 == 0. Здесь сначала вычисляется сравнение n % 2 == 0, затем True или False присваивается переменной even; после этого достаточно написать if even:. Если разбить длинное условие на такие части, программа читается легче.
Полная и неполная форма условного оператора
Неполная форма состоит только из if: если условие истинно, блок выполняется, если ложно — ничего не происходит. Полная форма — if … else: всегда выполняется ровно одна из двух ветвей — блок if при истинном условии и блок else при ложном.
Правила записи: после условия ставится двоеточие (:), а команды ветви пишутся с отступом — обычно 4 пробела. Подряд идущие строки с одинаковым отступом образуют блок: закончился отступ — закончился и блок. else пишется с тем же отступом, что и его if. Команды после условного оператора без отступа выполняются в обоих случаях.
n = 38
if n % 5 == 3:
print(n // 5)
else:
print(n % 5)
print('end')▸ Ожидаемый результат
7 end
38 // 5 = 7. print('end') без отступа, поэтому выполняется в любом случае. Поставь n = 41 и запусти снова: на этот раз сработает ветвь else.x = 12
y = 5
if x % y == 2:
y = x * 2
print(x, y)
x = y - x
y = y + 1
print(x, y)▸ Ожидаемый результат
12 24 12 25
Что выведет программа выше? Запишите обе строки.
Показать решениеСкрыть решение
y = 12 · 2 = 24;
print(x, y) → 12 24; x = 24 − 12 = 12.После блока идут команды без отступа: y = 24 + 1 = 25;
print(x, y) → 12 25.Ответ — две строки: 12 24 и 12 25. Ловушка: кто считает
y = y + 1 без отступа с начальным y = 5, пишет «12 6».Цепочки elif и вложенные условия
Когда вариантов больше двух, используют elif («else if» — «иначе, если»). Условия проверяются сверху вниз; выполняется ветвь первого истинного условия, а остаток цепочки пропускается — даже если следующие условия тоже истинны. Если ни одно условие не истинно, выполняется заключительный else (если его нет — ничего). Поэтому важен порядок условий: если if n > 10 стоит раньше elif n > 100, вторая ветвь никогда не выполнится.
if … elif … else: условия проверяются сверху вниз, выполняется ветвь первого истинного условия, затем программа переходит к команде после цепочки.s = 'k'
b = 'm'
if s == b:
print('A')
elif s < b:
print('B')
elif s == 'k':
print('C')
else:
print('D')▸ Ожидаемый результат
B
s = input().Что выведет программа выше, если с клавиатуры введена буква k?
A) A B) B C) C D) D E) ничего
Показать решениеСкрыть решение
s == b → 'k' == 'm' ✗.s < b → 'k' < 'm' ✓ (в алфавите k стоит раньше m) → печатается B.Остаток цепочки не проверяется, хотя
s == 'k' тоже было истинно. Ответ: B.Внутри ветви может стоять ещё один условный оператор — это вложенное условие. Внутренний if проверяется, только если истинно внешнее условие. Какой else к какому if относится, определяет только отступ: else относится к ближайшему if выше с тем же отступом. В экзаменационных программах условия часто вложены на 2–3 уровня, поэтому прослеживай их по системе.
- 1Запиши начальные значения
Перенеси переменные и их начальные значения (вместе с вводом) в таблицу.
- 2Вычисли условие: ✓ или ✗
Вычисли условие по текущим значениям и поставь рядом ✓ (истина) или ✗ (ложь).
- 3Если ✗, пропусти блок
Пропусти все строки с бо́льшим отступом и перейди к
elif/elseс тем же отступом, а если его нет — к строке после блока. - 4Если ✓, войди в блок
Выполни команды, обнови переменные и повтори шаги 2–3 для внутренних условий. Если ветвь выполнена, остальные
elif/elseэтой цепочки пропускаются. - 5Не забудь команды после него
Строки без отступа после условного оператора выполняются всегда — ответ часто получается именно там.
a = 36
b = 14
if a % b > 5:
a = a - b
if a > 2 * b:
b = b + 3
else:
b = b - 3
if b % 2 == 1:
a = a + 1
else:
a = a + b
print(a + b, a - b)▸ Ожидаемый результат
34 12
Определите результат программы выше.
A) 39 5 B) 33 11 C) 34 12 D) 58 14 E) 22 11
Показать решениеСкрыть решение
2) a > 2 · b → 22 > 28 ✗ → ветвь
else: b = 14 − 3 = 11.3) Внутреннее условие: b % 2 == 1 → 11 % 2 = 1 ✓ → a = 22 + 1 = 23.
4) Внешний
else пропускается. print(a + b, a - b) → 23 + 11 = 34, 23 − 11 = 12.Ответ: C) 34 12. Вариант B — для тех, кто забыл внутренний
if (a = 22, b = 11), A — для выбравших не ту ветвь (b = 17).Составные условия: and, or, not
Несколько условий соединяются логическими операциями: and (и) истинно, когда истинны оба условия; or (или) — когда истинно хотя бы одно; not (не) меняет значение условия на противоположное. Это конъюнкция, дизъюнкция и инверсия из урока «Логические операции и логические элементы».
| A | B | A and B | A or B | not A |
|---|---|---|---|---|
True | True | True | True | False |
True | False | False | True | False |
False | True | False | True | True |
False | False | False | False | True |
Приоритет убывает слева направо: сначала арифметика, затем сравнения, потом not, and и в самом конце or. Сомневаешься — ставь скобки: программа станет и правильной, и понятной.
Готовые шаблоны для промежутков: x принадлежит отрезку [10; 20] — 10 <= x <= 20 (то есть x >= 10 and x <= 20); x вне отрезка — x < 10 or x > 20, что то же самое, что not (10 <= x <= 20). Осторожно: and в условии «вне отрезка» — ошибка: ни одно число не может быть одновременно меньше 10 и больше 20, такое условие всегда ложно.
При x = 7, y = 2 вычислите: 1) x > 5 or y > 3 and x < 0; 2) not x > 5 and y == 2; 3) (x > 5 or y > 3) and x < 0.
Показать решениеСкрыть решение
and: y > 3 and x < 0 → ✗ и ✗ = False; затем x > 5 or False → ✓ или ✗ = True.2)
not выполняется после сравнения, но до and: not (7 > 5) = not True = False; False and … = False.3) Сначала скобки:
x > 5 or y > 3 = True; True and x < 0 = ✓ и ✗ = False.Выражения 1 и 3 отличаются только скобками, а результаты противоположны.
Программа выполняется 10 раз подряд, и каждый раз с клавиатуры вводится пара (s, t): (9, 4); (9, 6); (2, 5); (−1, 3); (8, 8); (0, 0); (12, 9); (−5, −5); (7, 1); (10, 11). Сколько раз будет напечатано Yes? (В азербайджанских заданиях обычно печатаются слова «Bəli» / «Xeyr» — «да» / «нет».)s = int(input())t = int(input())if s >= 8 and t % 3 != 0 or s < 0: print('Yes')else: print('No')
Показать решениеСкрыть решение
and выполняется раньше or, условие читается как (s >= 8 and t % 3 != 0) or s < 0.• Пары с s < 0 сразу дают
Yes: (−1, 3), (−5, −5) — 2 пары.• Для остальных нужно s ≥ 8, и t не должно делиться на 3: (9, 4) ✓, (9, 6) ✗ (6 % 3 = 0), (8, 8) ✓, (12, 9) ✗ (9 % 3 = 0), (10, 11) ✓ — 3 пары.
• В (2, 5), (0, 0), (7, 1) s < 8 →
No.Всего: 2 + 3 = 5.
pairs = [(9, 4), (9, 6), (2, 5), (-1, 3), (8, 8),
(0, 0), (12, 9), (-5, -5), (7, 1), (10, 11)]
count = 0
for s, t in pairs:
if s >= 8 and t % 3 != 0 or s < 0:
count = count + 1
print(count)▸ Ожидаемый результат
5
for (следующий урок) проверяет то же условие для каждой из 10 пар и считает ответы Yes.x = 3
y = 5
if x * y > 15:
print('#')
elif y ** x != 125:
print('# #')
else:
print('# # # #')
if y // x == 1:
print('# # #')▸ Ожидаемый результат
# # # # # # #
Сколько символов # будет напечатано после выполнения программы выше?
A) 1 B) 3 C) 4 D) 7 E) 10
Показать решениеСкрыть решение
15 > 15 ✗; elif: 5 ** 3 = 125, 125 != 125 ✗ → else: # # # # (4 символа).Второй, отдельный
if: y // x = 5 // 3 = 1, 1 == 1 ✓ → # # # (3 символа).Всего D) 7. Второй
if — самостоятельный оператор и проверяется независимо от результата первого.Условия с остатком и письменное задание
Самые любимые условия экзамена строятся на остатках. Их нужно узнавать с первого взгляда:
n % 2 == 0— n чётное;n % 2 == 1— n нечётное;n % k == 0— n делится на k;n % k != 0— не делится;n % 10 == 7— последняя цифра 7;n // 10 % 10 == 3— цифра десятков 3;n % 3 == 0 and n % 5 == 0— n делится на 15;- периодический узор: если что-то повторяется каждые k шагов,
n % kпоказывает место n в узоре.
Применим последнюю идею в письменном задании. Натуральные числа записаны в таблицу из 4 столбцов «змейкой»: в нечётных строках слева направо, в чётных — справа налево.
| A | B | C | D |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
| 8 | 7 | 6 | 5 |
| 9 | 10 | 11 | 12 |
| 16 | 15 | 14 | 13 |
| … | … | … | … |
Напишите на Python программу, которая определяет, в каком столбце таблицы выше находится введённое с клавиатуры натуральное число n (1 ≤ n ≤ 1000). Например: ввод 6 → вывод C; 13 → D; 16 → A; 26 → B.
Показать решениеСкрыть решение
2) По первым двум строкам определяем место каждого остатка: r = 1 → A, 2 → B, 3 → C, 4 → D, 5 → D, 6 → C, 7 → B, 0 → A (8, 16, 24, … стоят в столбце A).
3) Группируем: A — r = 0 или 1; B — 2 или 7; C — 3 или 6; D — оставшиеся 4 и 5.
4) Превращаем это в цепочку
if … elif … else (программа ниже). Проверка: 26 % 8 = 2 → B ✓, 13 % 8 = 5 → D ✓.n = 26
r = n % 8
if r == 0 or r == 1:
print('A')
elif r == 2 or r == 7:
print('B')
elif r == 3 or r == 6:
print('C')
else:
print('D')▸ Ожидаемый результат
B
n = int(input()); здесь стоит n = 26, чтобы программа работала в браузере. Проверь также 6, 13 и 16.В письменном задании пишется полная программа: ввод (int(input())), вычисление (здесь остаток и условия) и вывод (print). ГЭЦ не публикует критерии оценки письменных заданий, поэтому пиши каждую часть ясно и проверяй программу шаг за шагом на всех случаях из таблицы примеров и на «граничных» значениях (здесь на числах с остатком 0, таких как 8 и 16).
Светофор работает циклично: в каждых 60 секундах первые 30 секунд горит зелёный (green), следующие 5 — жёлтый (yellow), оставшиеся 25 — красный (red); отсчёт начинается с 0-й секунды. Напиши if … elif … else, чтобы программа выводила цвет для каждого момента (цикл for по заданным моментам уже готов).
for t in [10, 33, 50, 1000, 1234]:
r = t % 60
colour = '?'
# choose the colour with if / elif / else
print(t, colour)▸ Ожидаемый результат
10 green 33 yellow 50 red 1000 red 1234 yellow
Год високосный (366 дней), если он делится на 4, но не делится на 100, или если он делится на 400. Замени False в переменной leap этим составным условием, чтобы программа дала верный ответ для четырёх лет.
for y in [2024, 2100, 2000, 2026]:
leap = False # write the condition here
if leap:
print(y, 'Yes')
else:
print(y, 'No')▸ Ожидаемый результат
2024 Yes 2100 No 2000 Yes 2026 No
Главное
- Условие — выражение со значением
TrueилиFalse: равенство==, неравенство!=; строки сравниваются посимвольно по кодам ('10' < '9'). - В неполном
ifветвь может выполниться или нет; в полномif … elseвсегда выполняется ровно одна из двух ветвей. Блок определяется отступом. - В цепочке
if … elif … elseвыполняется только ветвь первого истинного условия; отдельныеifпроверяются каждый сам по себе. - Приоритет: арифметика → сравнение →
not→and→or; сомневаешься — ставь скобки. - Чётность, делимость и периодические узоры (столбцы, дни недели, светофор) разбиваются на ветви по остатку
n % k.
Проверь себя
Вопросов: 12. Каждый правильный ответ приносит XP.