Статья Автор: Деникина Н.В., Деникин А.В.

ОГЭ Вопрос №6 . Теория и стратегии решения

Цель: научиться формально исполнять программы с условным оператором и сложным логическим условием, содержащим and/or/not

Что проверяет задание №6

Нужно уметь читать короткие программы, подставлять данные запусков и получать точный вывод для каждого, соблюдая порядок проверки if/else и правила логики.

Вариант с параметром требует подобрать целое А, чтобы число  выводов YES/NO по всем запускам было ровно заданным, используя неравенства и «границы» по данным.


База: логика в Python

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

Равенство/неравенство: ==, !=;
сравнения: <, <=, >, >=
результат — булево значение True/False.


Логические связки

and — истина, только если истинны оба подусловия;
or — истина, если истинно хотя бы одно;
not — инверсия (not True = False, not False = True).

Приоритет

  1. Сначала скобки,
  2. затем not,
  3. затем and,
  4. затем or.

Короткое замыкание

В выражении с and/or правая часть может не вычисляться, если результат уже понятен по левой части.


Таблицы истинности

P Q P and Q P or Q
F F F F
F T F T
T F F T
T T T T

Правила Де Моргана

not(P and Q) = (not P) or (not Q)

not(P or Q) = (not P) and (not Q)

Помните: в if/elif/else выполняется только первая истинная ветка сверху вниз, а else берётся, если все предыдущие условия ложны.


Синтаксис if/elif/else


x = int(input())
y = int(input())

if x > 10:
    print("A")
elif (x > 5) and (y >= 0):
    print("B")
else:
    print("C")

Порядок такой: проверяется if; если ложь — проверяется следующий elif; при первой истине печать и завершение ветвления; если все ложны — выполняется else.

Печать