Вся теория программирования и полный разбор задания 16
Полный разбор всей теории по программированию можно найти на сайте в учебнике. Там же — полный разбор задания 16 ОГЭ.
Ввод и вывод, переменные, условия, циклы и обработка последовательностей — изучай тему по порядку, от основ Python к самостоятельному решению.
Открыть учебникВ учебнике выбери ОГЭ и задание 16.
Как решать задание 16 ОГЭ по информатике
В этих задачах нужно написать программу обработки числовой последовательности: прочитать входные данные, проверить каждый элемент и вывести результат. Разберём восемь типов задач на Python: сумма, количество, минимум, среднее, максимум и свойства записи числа.
- Определи формат ввода. Сначала дано количество элементов или последовательность заканчивается нулём?
- Запиши условие отбора. Например, число кратно 3 и оканчивается на 8.
- Выбери переменные. Сумма, счётчик, минимум, максимум или флаг.
- Обработай каждый элемент один раз. Прочитай, проверь и обнови результат.
- После цикла выведи ответ в нужном порядке и проверь программу на примере.
Ввод, условия и переменные
| Запись | Что делает |
|---|---|
number = int(input()) | Читает одну строку и превращает её в целое число. |
= и == | Один знак присваивает значение; два знака сравнивают значения. |
if условие: | Выполняет строки с отступом, если условие истинно. |
and / or | and требует выполнения обоих условий; or — хотя бы одного. |
suma += number | Прибавляет число к накопленной сумме. |
count += 1 | Увеличивает количество найденных элементов на один. |
print(answer) | Печатает результат. Поясняющий текст в экзаменационный вывод добавлять не нужно. |
После if, for, while и else ставим двоеточие. Строки внутри блока пишем с одинаковым отступом, обычно в четыре пробела. В наших примерах каждое число вводится с новой строки.
Если Python пока незнаком, начни с полной теории программирования в учебнике, затем вернись к этим примерам.
Когда нужен for, а когда while
Количество известно
Сначала вводится N, затем ровно N элементов. Первое число не является элементом.
n = int(input())
count = 0
for i in range(n):
number = int(input())
if number % 2 == 0:
count += 1
print(count)Ввод до нуля
Количество заранее неизвестно. Ноль завершает ввод и не обрабатывается.
number = int(input())
count = 0
while number != 0:
if number % 2 == 0:
count += 1
number = int(input())
print(count)Остаток от деления и запись числа
| Условие | Проверка на Python |
|---|---|
| Кратно 3 | number % 3 == 0 |
| Чётное | number % 2 == 0 |
| Последняя десятичная цифра — 8 | number % 10 == 8 |
| Последняя пятеричная цифра | number % 5 |
| Шестнадцатеричная запись без префикса | hex(number)[2:].upper() |
| Восьмеричная запись без префикса | oct(number)[2:] |
| Три цифры и последняя B | len(s) == 3 and s[-1] == 'B' |
% возвращает остаток от деления. Для неотрицательного числа остаток по основанию b даёт последнюю цифру в этой системе. Например, 12 = 2 × 5 + 2, поэтому последняя пятеричная цифра числа 12 равна 2. Для отрицательных чисел проверка десятичной последней цифры требует отдельного учёта знака, например через abs(number) % 10; в задачах на цифры ниже числа натуральные.
В строке s функция len(s) считает символы, а s[-1] берёт последний. Префиксы 0x и 0o не относятся к цифрам записи, поэтому удаляем первые два символа срезом [2:].
Какие переменные нужны для ответа
| Что ищем | Начало | Что меняем |
|---|---|---|
| Сумму | suma = 0 | suma += number для подходящего числа |
| Количество | count = 0 | count += 1 для подходящего числа |
| Минимум | mn = None | Запоминаем первое подходящее число, затем меньшее |
| Максимум неотрицательных оценок | mx = 0 | mx = number, если число больше текущего максимума |
| Среднее | suma = 0 и count = 0 | Суммируем и считаем только подходящие; делим после цикла |
| Есть ли подходящее | found = False | found = True, если нашли хотя бы одно |
Начальные значения минимума и максимума выбирай по ограничениям задачи. Для последовательности произвольных целых чисел максимум можно начать с первого элемента либо использовать подход с None, как для минимума в разборе 3.
Сумма чисел, кратных 3 и оканчивающихся на 8
Что означает ноль: 0 не является признаком конца: читаем ровно a чисел.
Ввод
3
18
25
48Вывод
66Проходим пример по шагам
| Число | Кратно 3? | Заканчивается на 8? | Сумма |
|---|---|---|---|
| 18 | да | да | 18 |
| 25 | нет | нет | 18 |
| 48 | да | да | 66 |
Код на Python
a = int(input())
suma = 0
for i in range(a):
number = int(input())
if number % 3 == 0 and number % 10 == 8:
suma += number
print(suma)Почему работает
| Строка или проверка | Смысл |
|---|---|
a = int(input()) | первое число сообщает, сколько элементов поступит |
suma = 0 | до чтения элементов сумма нулевая |
for i in range(a) | выполняем ровно a повторов |
if ... and ... | обе проверки должны быть истинными |
suma += number | прибавляем подходящее число к сумме |
print(suma) | выводим итог после цикла |
Количество чётных чисел, кратных 7
Что означает ноль: 0 — стоп-сигнал, он не проверяется на чётность и кратность.
Ввод
-32
14
17
0Вывод
1Проходим пример по шагам
| Число | Чётное? | Кратно 7? | count |
|---|---|---|---|
| -32 | да | нет | 0 |
| 14 | да | да | 1 |
| 17 | нет | нет | 1 |
| 0 | стоп | не проверяем | 1 |
Код на Python
number = int(input())
count = 0
while number != 0:
if number % 2 == 0 and number % 7 == 0:
count += 1
number = int(input())
print(count)Почему работает
| Строка или проверка | Смысл |
|---|---|
number = int(input()) | считываем первое значение для проверки на ноль |
count = 0 | пока подходящих чисел нет |
while number != 0 | повторяем, пока не увидели стоп-сигнал |
if ... and ... | нужны сразу чётность и кратность семи |
count += 1 | учитываем одно подошедшее число |
number = int(input()) | обязательно читаем следующее число внутри цикла |
Наименьшее число, кратное 3
Что означает ноль: 0 завершает ввод, минимум из него не выбираем.
Ввод
45
10
9
0Вывод
9Проходим пример по шагам
| Число | Кратно 3? | Сравнение с минимумом | mn после шага |
|---|---|---|---|
| 45 | да | mn ещё не задан — берём 45 | 45 |
| 10 | нет | не сравниваем | 45 |
| 9 | да | 9 < 45 | 9 |
| 0 | стоп | не сравниваем | 9 |
Код на Python
number = int(input())
mn = None
while number != 0:
if number % 3 == 0 and (mn is None or number < mn):
mn = number
number = int(input())
print(mn)Почему работает
| Строка или проверка | Смысл |
|---|---|
mn = None | подходящего числа пока нет; None обозначает отсутствие значения |
number % 3 == 0 | сначала отбираем числа, кратные трём |
mn is None or number < mn | берём первое подходящее число либо улучшаем найденный минимум |
mn = number | запоминаем само число, а не количество найденных чисел |
number = int(input()) | в конце каждого прохода читаем следующий элемент |
print(mn) | по условию подходящее число обязательно есть, поэтому печатаем найденный минимум |
Среднее чисел, оканчивающихся на 1
Что означает ноль: 0 завершает ввод, в сумму и количество не входит.
Ввод
21
30
11
0Вывод
16.0Проходим пример по шагам
| Число | Последняя цифра 1? | suma | count |
|---|---|---|---|
| 21 | да | 21 | 1 |
| 30 | нет | 21 | 1 |
| 11 | да | 32 | 2 |
| 0 | стоп | 32 | 2 |
Код на Python
number = int(input())
suma = 0
count = 0
while number != 0:
if number % 10 == 1:
suma += number
count += 1
number = int(input())
if count >= 1:
print(suma / count)
else:
print('NO')Почему работает
| Строка или проверка | Смысл |
|---|---|
suma = 0; count = 0 | готовим сумму и число подходящих элементов |
number % 10 == 1 | проверяем последнюю десятичную цифру |
suma += number; count += 1 | одновременно обновляем сумму и количество |
if count >= 1 | не допускаем деления на ноль |
print(suma / count) | сумму делим на количество; Python выдаёт 16.0 |
print('NO') | сообщаем, что подходящих чисел не нашлось |
Если подходящих чисел нет
Ввод
16
5
0Вывод
NOВикторина: максимум и наличие нулевого результата
Что означает ноль: 0 — обычный результат участника, поскольку число результатов a известно заранее.
Ввод
4
15
12
0
17Вывод
17
YESПроходим пример по шагам
| Участник | Результат | Максимум mx | Нулевой count |
|---|---|---|---|
| 1 | 15 | 15 | 0 |
| 2 | 12 | 15 | 0 |
| 3 | 0 | 15 | 1 |
| 4 | 17 | 17 | 1 |
Код на Python
a = int(input())
mx = 0
count = 0
for i in range(a):
number = int(input())
if number > mx:
mx = number
if number == 0:
count += 1
print(mx)
if count >= 1:
print('YES')
else:
print('NO')Почему работает
| Строка или проверка | Смысл |
|---|---|
a = int(input()) | узнаём количество результатов |
mx = 0 | стартовый максимум для оценок от 0 до 20 |
if number > mx | обновляем лучший результат |
if number == 0 | учитываем участника с нулём |
print(mx) | первая строка ответа — лучший результат |
print('YES') / print('NO') | вторая строка сообщает, был ли ноль |
Чётная последняя цифра в пятеричной записи
Что означает ноль: 0 завершает ввод; хотя цифра 0 чётная, стоп-сигнал в сумму не входит.
Ввод
12
15
10
71
50
11
0Вывод
87Проходим пример по шагам
| Число | Остаток % 5 | Запись в base 5 | Сумма |
|---|---|---|---|
| 12 | 2 — чётный | 22 | 12 |
| 15 | 0 — чётный | 30 | 27 |
| 10 | 0 — чётный | 20 | 37 |
| 71 | 1 — нечётный | 241 | 37 |
| 50 | 0 — чётный | 200 | 87 |
| 11 | 1 — нечётный | 21 | 87 |
Код на Python
number = int(input())
suma = 0
found = False
while number != 0:
ost = number % 5
if ost % 2 == 0:
suma += number
found = True
number = int(input())
if found:
print(suma)
else:
print('NO')Почему работает
| Строка или проверка | Смысл |
|---|---|
number % 5 | остаток — последняя пятеричная цифра: 0, 1, 2, 3 или 4 |
ost % 2 == 0 | проверка цифры 0, 2 или 4 |
suma += number | складываем исходное десятичное число |
found = True | запоминаем факт хотя бы одного подходящего |
if found | различаем число суммы и сообщение NO |
Если подходящих чисел нет
Ввод
1
6
0Вывод
NOТрёхзначная hex-запись с последней B
Что означает ноль: 0 завершает ввод, hex(0) не проверяем.
Ввод
171
283
891
955
4123
0Вывод
3Проходим пример по шагам
| Число | Hex без 0x | Длина | count |
|---|---|---|---|
| 171 | AB | 2 | 0 |
| 283 | 11B | 3 | 1 |
| 891 | 37B | 3 | 2 |
| 955 | 3BB | 3 | 3 |
| 4123 | 101B | 4 | 3 |
Код на Python
number = int(input())
count = 0
while number != 0:
s = hex(number)[2:].upper()
if len(s) == 3 and s[-1] == 'B':
count += 1
number = int(input())
print(count)Почему работает
| Строка или проверка | Смысл |
|---|---|
hex(number) | получаем строку, например '0x11b' |
[2:] | убираем два первых символа '0x' |
.upper() | преобразуем маленькую b в большую B |
len(s) == 3 | проверяем число цифр записи без префикса |
s[-1] == 'B' | проверяем последний символ строки |
count += 1 | увеличиваем ответ при выполнении обоих условий |
Четырёхзначная oct-запись с последней 1
Что означает ноль: Количество элементов задано первым числом; отдельного стоп-сигнала нет.
Ввод
5
481
553
889
3025
4121Вывод
3Проходим пример по шагам
| Число | Oct без 0o | Длина | count |
|---|---|---|---|
| 481 | 741 | 3 | 0 |
| 553 | 1051 | 4 | 1 |
| 889 | 1571 | 4 | 2 |
| 3025 | 5721 | 4 | 3 |
| 4121 | 10031 | 5 | 3 |
Код на Python
a = int(input())
count = 0
for i in range(a):
number = int(input())
s = oct(number)[2:]
if len(s) == 4 and s[-1] == '1':
count += 1
print(count)Почему работает
| Строка или проверка | Смысл |
|---|---|
a = int(input()) | считываем число элементов перед циклом |
for i in range(a) | ровно a раз читаем число и проверяем его |
oct(number)[2:] | получаем восьмеричные цифры без префикса '0o' |
len(s) == 4 | нужны именно четыре цифры |
s[-1] == '1' | последняя цифра записи должна быть 1 |
print(count) | выводим число подходящих элементов |
Практика с проверкой ответа
В этих мини-задачах числа для краткости перечислены через запятую. В программах каждый элемент вводится с новой строки. После ошибки можно изменить ответ и попробовать снова.
Решено: 0 из 8
1. Сумма с двумя условиями
Сначала дано количество 4, затем числа 18, 28, 48, 7. Какую сумму получим для чисел, кратных 3 и оканчивающихся на 8?
2. Счётчик до нуля
Введены −14, 7, 28, 0. Ноль завершает ввод. Сколько чисел одновременно чётны и кратны 7?
3. Минимум среди подходящих
До нуля введены 30, 8, 12, 0. Какое минимальное число кратно 3?
4. Среднее без подходящих чисел
Натуральные числа вводятся до нуля: 16, 5, 0. Нужно среднее чисел с последней цифрой 1; если их нет — слово NO. Что напечатает программа?
5. Нулевой результат в викторине
Дано количество участников 3 и оценки 0, 12, 7. Программа печатает максимум, затем YES/NO о наличии нуля. Какое слово будет на второй строке?
6. Последняя цифра в базе 5
Натуральные числа вводятся до нуля: 12, 15, 11, 0. Найди сумму чисел с чётной последней пятеричной цифрой.
7. Три цифры и буква B
Проверяются натуральные числа 171, 283, 4123, затем стоп-сигнал 0. Их записи: AB, 11B, 101B. Сколько записей ровно трёхзначные и заканчиваются на B?
8. Четыре восьмеричные цифры
Первое число 3 задаёт количество элементов. Далее 481, 553, 889; их записи — 741, 1051, 1571. Сколько четырёхзначных записей оканчиваются на 1?
Видео по заданию №16
Видео скоро выйдет.
Скачать примеры программ на Python
Восемь отдельных файлов .py, входные данные и ожидаемые ответы для каждого примера. Запускай один файл и вводи числа по одному на строке.
Частые ошибки в задании 16
- Обработать количество N как первое число последовательности.
- Принять нулевую оценку за конец ввода, хотя число результатов известно.
- Забыть прочитать следующее число внутри while.
- Использовать or вместо and, когда нужны оба свойства.
- Вместо суммы чисел посчитать их количество или наоборот.
- Разделить сумму на число всех элементов, хотя нужно среднее только подходящих.
- Делить на ноль, если подходящих элементов нет.
- Посчитать длину hex/oct вместе с префиксом.
- Начать минимум с нуля для положительных чисел или максимум с нуля для отрицательных.
- Вывести промежуточный результат внутри цикла вместо одного итогового ответа.
Вопросы о задании 16 ОГЭ
Нужно ли переводить число в пятеричную систему целиком?
Если проверяется только последняя цифра натурального числа, достаточно остатка number % 5. Полная запись не нужна.
Почему завершающий ноль не считаем?
В задачах «до нуля» он обозначает конец ввода. Условие while number != 0 останавливает цикл до обработки нуля. В задачах с заданным количеством элементов смысл нуля может быть другим.
Как проверить программу?
Сначала введи пример из условия, затем проверь отдельные случаи: подходит только одно число, подходит несколько, не подходит ни одного — если это допускается условием. Проверь обе части составного условия и точный формат вывода. Для минимума учитывай гарантию наличия подходящего числа.
Где изучить всю теорию программирования и полный разбор 16 задания?
На сайте в учебнике. Выбери ОГЭ и задание 16: там можно пройти теорию программирования по порядку и изучить полный разбор задания.
Полная теория и разбор задания 16 — в учебнике
Полный разбор всей теории по программированию можно найти на сайте в учебнике. Там же находится полный разбор задания 16 ОГЭ: от первых команд Python до обработки последовательностей.
Открой учебник, выбери ОГЭ и задание 16, чтобы пройти тему последовательно.
Перейти в учебник