Разбор задания №16 ОГЭ по информатике: Программирование на Python на максимальные 2 балла

Share
Разбор задания №16 ОГЭ по информатике: Программирование на Python на максимальные 2 балла

Задание №16 в ОГЭ по информатике — финальное задание экзамена, проверяющее навыки практического программирования и умение реализовывать алгоритмы обработки числовых последовательностей.
Ранее эта задача была известна как задание 15.2. В актуальной структуре экзамена выбора между Роботом и кодом больше нет: «Робот» стал обязательным заданием №15, а программирование вынесено в самостоятельное задание №16.
За полное и безошибочное решение даётся 2 первичных балла. Программа сохраняется в отдельный файл и проверяется экспертами предметной комиссии на скрытых автоматических тестах.

Почему Python — единственный актуальный выбор на ОГЭ

Формально спецификация разрешает сдавать решение на C++, Pascal, Python или школьном алгоритмическом языке. Однако на практике Python сегодня является безоговорочным лидером:

  1. Минимум шаблонного кода: В Python не нужно объявлять типы переменных, подключать громоздкие библиотеки и ставить точки с запятой. Вся программа для ОГЭ умещается в 6–10 понятных строк.
  2. Прямой мостик к ЕГЭ: В 10–11 классах на компьютерном ЕГЭ (КЕГЭ) более 70% заданий первой части и сложнейшие задачи второй части (№24, 26, 27) решаются именно на Python. Осваивая его в 9 классе, ученик инвестирует в баллы своего будущего выпускного экзамена.
  3. Безопасная работа с большими числами: В Python встроенная длинная арифметика исключает переполнение типов, с которым часто сталкиваются начинающие программисты на C++.
  4. Удобный ввод данных: Чтение чисел через input() в цикле интуитивно понятно и не требует сложной работы с потоками.

1. Критерии оценивания задания №16

Решение проверяется на наборе скрытых тестов, подготовленных экспертами ФИПИ:

БаллыКритерии оценивания решения
2 баллаПрограмма правильно работает на всех тестах, учитывает ограничения диапазона чисел, корректно обрабатывает отрицательные значения и выводит верный результат.
1 баллДопущена одна содержательная ошибка (например: не использован модуль при поиске последней цифры у отрицательных чисел, неверно инициализирован поиск минимума/максимума), из-за которой программа даёт сбой лишь на некоторых тестах.
0 балловПрограмма не запускается из-за синтаксической ошибки, зацикливается, не выводит ответ или решает задачу неверно.

2. Базовый арсенал операций Python для ОГЭ

Для решения любого прототипа задания №16 достаточно уверенно владеть небольшим набором конструкций:

  • Ввод целого числа:x = int(input())
  • Проверка делимости (кратности):x % 4 == 0 — число делится на 4 без остатка.x % 2 != 0 — число нечётное.
  • Проверка последней цифры (золотое правило!):abs(x) % 10 == 7 — число оканчивается на 7.(Функция abs() берёт число по модулю. Без неё для отрицательного числа -17 % 10 в Python получится 3, а не 7, что приведёт к потере балла!).
  • Проверка диапазона (двузначные / трёхзначные числа):10 <= abs(x) <= 99 — число является двузначным.100 <= abs(x) <= 999 — число является трёхзначным.
  • Накопители (счётчик и сумма):count += 1 — подсчёт количества подходящих чисел.total_sum += x — накопление суммы.

3. Два базовых шаблона ввода данных

В задании №16 встречаются всего два сценария подачи входных чисел.

Шаблон 1: Количество чисел N известно заранее

Сначала вводится число N, а затем ровно N элементов последовательности. Для этого используется цикл for:
Python

n = int(input())
count = 0

for _ in range(n):
    x = int(input())
    if условие:
        count += 1

print(count)

Шаблон 2: Последовательность завершается нулём

Количество чисел заранее неизвестно, но сказано: «программа получает числа до тех пор, пока не будет введён 0 (ноль — признак окончания ввода)». Для этого используется цикл while True:
Python

count = 0

while True:
    x = int(input())
    if x == 0:
        break  # Выходим из цикла при вводе нуля
    
    if условие:
        count += 1

print(count)

4. Разбор типовых задач из банка ФИПИ

Пример 1. Подсчёт количества чисел (ввод до нуля)

Условие:
Напишите программу, которая в последовательности целых чисел определяет количество чисел, кратных 4 и оканчивающихся на 8.
Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введённые числа не превышают по модулю 30 000.
Программа должна вывести одно число — количество найденных элементов.

Решение на Python:

Python

count = 0

while True:
    x = int(input())
    if x == 0:
        break
    
    # Проверяем кратность 4 и последнюю цифру через модуль abs()
    if x % 4 == 0 and abs(x) % 10 == 8:
        count += 1

print(count)

Пример 2. Поиск суммы с несколькими условиями (ввод через N)

Условие:
Напишите программу, которая в последовательности натуральных чисел вычисляет сумму всех трёхзначных чисел, кратных 5.
Программа получает на вход количество чисел N (1 ≤ N ≤ 100), а затем сами числа.
Гарантируется, что в последовательности есть хотя бы одно подходящее число. Выведите полученную сумму.

Решение на Python:

Python

n = int(input())
total_sum = 0

for _ in range(n):
    x = int(input())
    
    # Проверяем трёхзначность и делимость на 5
    if 100 <= x <= 999 and x % 5 == 0:
        total_sum += x

print(total_sum)

Пример 3. Поиск минимума или максимума (краевые значения)

Условие:
Напишите программу, которая в последовательности натуральных чисел находит минимальное число, оканчивающееся на 3.
Программа получает на вход количество чисел N, а затем сами числа.
Гарантируется, что хотя бы одно подходящее число присутствует. Числа не превышают 30 000.

Особенность задачи:

При поиске минимума начальное значение переменной должно быть больше любого возможного числа из условия (если числа до 30 000, берём 30001 или float('inf')). При поиске максимума начальное значение должно быть меньше любого возможного числа.

Решение на Python:

Python

n = int(input())
min_val = 30001  # Заведомо больше любого числа из диапазона задачи

for _ in range(n):
    x = int(input())
    
    if abs(x) % 10 == 3:
        if x < min_val:
            min_val = x

print(min_val)

Пример 4. Вычисление среднего арифметического

Условие:
Напишите программу, которая находит среднее арифметическое чисел, кратных 8. Последовательность оканчивается числом 0.
Если подходящих чисел нет, программа должна вывести NO. Ответ выведите с точностью до одного знака после запятой.

Решение на Python:

Python

total_sum = 0
count = 0

while True:
    x = int(input())
    if x == 0:
        break
    
    if x % 8 == 0:
        total_sum += x
        count += 1

if count > 0:
    average = total_sum / count
    print(round(average, 1))
else:
    print("NO")

5. Топ ловушек и типичных ошибок на экзамене

  1. Забытая функция abs() для отрицательных чисел:
    По условию числа могут быть целыми (включая отрицательные). Если написать x % 10 == 6, для числа -16 проверка вернёт False. Пишите строго: abs(x) % 10 == 6.
  2. Инициализация минимума нулём:
    Если задать min_val = 0, а все введённые положительные числа больше нуля, программа в конце выведет начальный ноль, а не найденный минимум. Для поиска минимума берите заведомо большое число (30001), для максимума — заведомо малое (-1 или -30001).
  3. Случайный учёт финального нуля:
    Строка проверки if x == 0: break должна стоять до блока проверки условий, иначе ноль попадёт под условия чётности или кратности (0 % 4 == 0 вернёт True) и испортит счётчик.
  4. Деление на ноль при вычислении среднего:
    Всегда проверяйте if count > 0: перед делением суммы на количество, чтобы программа не упала с ошибкой ZeroDivisionError.
  5. Формат сохранения файла:
    Сохраняйте код через File → Save As... в файл с расширением .py под именем, указанным организаторами в аудитории.

Памятка для ученика

┌─────────────────────────────────────────────────────────────┐
│              ЧЕК-ЛИСТ ДЛЯ ЗАДАНИЯ №16 ОГЭ                   │
├─────────────────────────────────────────────────────────────┤
│ 1. Выбрать шаблон ввода:                                    │
│    • Дано N   → «for _ in range(n):»                        │
│    • До нуля  → «while True:» с проверкой «if x == 0: break»│
│ 2. Последнюю цифру проверять строго через abs(x) % 10.      │
│ 3. Стартовые значения:                                      │
│    • count = 0                                              │
│    • total_sum = 0                                          │
│    • min_val = 30001 / max_val = -30001                     │
│ 4. Проверить код на тестовых примерах из бланка задания.    │
│ 5. Сохранить файл с расширением .py в рабочую папку.        │
└─────────────────────────────────────────────────────────────┘

Read more

В этот день в истории: 03.10.1993

Событие из мира науки и технологий 1993 год: В Москве противостояние сторонников президента Ельцина и Верховного Совета (ВС РФ) переходит в фазу открытого вооружённого противостояния — сторонники ВС РФ прорывают кольцо блокады вокруг Белого дома, захватывают здание мэрии и требуют предоставления прямого эфира у телецентра «Останкино».

Скрытая опция полосы прокрутки Windows позволяет перейти в любую точку документа или списка

В блоге Microsoft The Old New Thing ветеран Windows Рэймонд Чен поделился краткой историей сочетаний клавиш для полосы прокрутки. Обсуждая различные варианты взаимодействия с ней, он указал на «скрытый» ярлык, который требует удерживать клавишу Shift при щелчке в любом месте полосы прокрутки. Читать далее Источник

Metro 2033 и Last Light получат бесплатное обновление с улучшенной графикой и поддержкой 120 FPS

Возвращаться в московское метро скоро станет приятнее, насколько это вообще возможно среди мутантов и радиации. 4A Games и Deep Silver анонсировали бесплатное обновление для Metro 2033 Redux и Metro: Last Light Redux. На ПК оно выйдет 22 октября, а на PS5 и Xbox Series X|S — 29 октября. Читать новость