Задание 15.1 ОГЭ: как посчитать количество чисел по условию на Python?
В задании 15.1 попросили посчитать, сколько во введённой последовательности чисел делятся на 3, и вывести их сумму. Как написать на Python подсчёт количества и суммы по условию? Не уверен, как правильно завести счётчик и накопитель.
2 ответа
Это классическая задача 15.1 на счётчик + накопитель. Нужны две переменные: одна считает количество подходящих чисел, другая копит их сумму.
Если ввод идёт до нуля (нулём заканчивается):
x = int(input())
count = 0 # сколько чисел делится на 3
s = 0 # их сумма
while x != 0:
if x % 3 == 0:
count = count + 1
s = s + x
x = int(input())
print(count)
print(s)
Если задано N чисел:
n = int(input())
count = 0
s = 0
for i in range(n):
x = int(input())
if x % 3 == 0:
count += 1
s += x
print(count)
print(s)
Разбор ключевых мест:
x % 3 == 0— проверка «делится на 3 без остатка»;count += 1— то же, чтоcount = count + 1;- накопители обнуляются ДО цикла (count = 0, s = 0), иначе ошибка;
- в варианте «до нуля» сам 0 в подсчёт не входит и не суммируется.
Частая ошибка: обновляют сумму вне условия — тогда складываются все числа, а не только делящиеся на 3. И не забывайте про второй input() в цикле while, иначе будет вечный цикл с одним и тем же числом.
Если числа уже вводятся в одной строке через пробел (бывает в формулировках), читайте их так:
nums = list(map(int, input().split()))
count = sum(1 for x in nums if x % 3 == 0)
s = sum(x for x in nums if x % 3 == 0)
print(count, s)
Но на ОГЭ чаще каждое число вводится с новой строки, поэтому базовый шаблон с while/for и int(input()) универсальнее. Сначала уточните по условию, как именно подаются данные.