Задание 15.2: программа на Python — обработка последовательности
Главный вариант задания 15 для тех, кто знает Python: пишем программу, обрабатывающую последовательность чисел.
Задание 15.2 — написать программу, которая читает последовательность чисел и считает по ней что-то по условию: сумму, количество, минимум или максимум подходящих элементов.
Что проверяет задание 15.2
Программа получает на вход числа (либо сначала их количество, либо последовательность до признака конца — обычно 0) и должна вывести результат: сколько чисел обладают свойством, их сумму, наибольшее/наименьшее и т.п. Свойство — это делимость, остаток, диапазон, последняя цифра. Это самый «алгоритмизируемый» вариант: почти все задачи решаются по 3–4 шаблонам.
Базовый шаблон: накопление
Идея всех решений одинакова: завести переменные-«копилки» (сумма, счётчик), перебрать числа в цикле, и для каждого проверить условие и при истине обновить копилку.
seq = [12, 25, 30, 7, 60, 45, 90, 3] # на экзамене числа читают через input()
total = 0 # копилка для суммы
for x in seq:
if x % 3 == 0 and x % 10 == 0: # кратно 3 И оканчивается на 0
total += x
print("Сумма кратных 3 и оканчивающихся на 0:", total)
Вывод:
Сумма кратных 3 и оканчивающихся на 0: 180
Подходят 30, 60, 90 (все делятся на 3 и кончаются на 0): 30+60+90 = 180. «Оканчивается на 0» — это x % 10 == 0; «кратно 3» — это x % 3 == 0. Условие «И» соединяет их через and.
Шаблон с признаком конца (последовательность до 0)
Часто последовательность не имеет известной длины, а заканчивается нулём. Тогда читают числа в цикле и прерывают по 0. Считаем количество и сумму чётных:
seq = [4, 7, 10, 5, 8, 0] # 0 — признак конца, в обработке не участвует
count = 0
s = 0
for x in seq:
if x == 0:
break # конец последовательности
if x % 2 == 0: # чётное
count += 1
s += x
print("Чётных:", count)
print("Их сумма:", s)
Вывод:
Чётных: 3 Их сумма: 22
Чётные до нуля — 4, 10, 8: их три, сумма 22. Признак конца 0 сам в подсчёт не входит — поэтому проверку if x == 0: break ставят до обработки.
Шаблон «минимум/максимум по условию»
Найти наименьшее число, удовлетворяющее условию, — отдельный шаблон. Заводим переменную «пока ничего не нашли» (None) и обновляем её, когда встречаем подходящее число меньше текущего минимума.
seq = [200, 145, 301, 160, 99, 175]
minimum = None
for x in seq:
if x > 150: # условие: больше 150
if minimum is None or x < minimum:
minimum = x
print("Минимальное число больше 150:", minimum)
Вывод:
Минимальное число больше 150: 160
Среди чисел больше 150 (это 200, 301, 160, 175) наименьшее — 160. Приём с None важен: нельзя начинать минимум с 0 или с большого числа «наугад» — можно ошибиться, если подходящих чисел мало.
Как читают ввод на экзамене
В реальной задаче числа вводят с клавиатуры. Типичные способы чтения (для понимания — этот блок не запускаем, ведь он ждёт ввод):
# Вариант А: сначала количество n, потом n чисел по одному
n = int(input())
for i in range(n):
x = int(input())
# ... обработка x ...
# Вариант Б: числа до нуля
while True:
x = int(input())
if x == 0:
break
# ... обработка x ...
Логика обработки (if-условие и копилки) — точно такая же, как в запускаемых примерах выше. На экзамене вы просто заменяете готовый список на чтение input().
Полезные условия-«кирпичики»
| Свойство | Условие на Python |
| чётное | x % 2 == 0 |
| кратно k | x % k == 0 |
| оканчивается на цифру d | x % 10 == d |
| двузначное | 10 <= x <= 99 |
| в диапазоне [a; b] | a <= x <= b |
Типичные ошибки
- Начинают минимум с 0 — и пропускают, что все подходящие числа положительны.
- Включают признак конца
0в подсчёт (проверкуbreakставят после обработки). - Путают
andиorв составном условии. - Считают «оканчивается на 5» как
x == 5вместоx % 10 == 5. - Забывают вывести результат через
printв самом конце (после цикла, а не внутри).
Итог
- Шаблон один: копилки → цикл → проверка условия → обновление → вывод.
- Сумма/количество — накопление; минимум — обновление через
None. - Последовательность до 0:
breakставят до обработки числа. - Свойства — это остатки и сравнения; соединяйте их
and/or.