Задание 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
кратно kx % k == 0
оканчивается на цифру dx % 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.
Проверьте себя
1. Как на Python проверить, что число x кратно 7?
Ax / 7 == 0
Bx % 7 == 0
Cx * 7 == 0
Dx // 7 == 7
2. Почему минимум по условию инициализируют значением None, а не нулём?
AТак короче код
BЧтобы не ошибиться, если все подходящие числа больше или меньше нуля
CNone быстрее работает
DНоль нельзя присвоить переменной
3. Последовательность заканчивается нулём. Где поставить проверку «if x == 0: break»?
AПосле обработки числа
BДо обработки числа, чтобы 0 не попал в подсчёт
CВ самом конце программы
DВнутри условия чётности
4. Как проверить, что число оканчивается на цифру 5?
Ax == 5
Bx % 5 == 0
Cx % 10 == 5
Dx // 10 == 5
Поддержать проект