Python

Информатика 8 класс/Задача на python

Имеется последовательность, состоящая из п чисел; п не превышает 100; каждый член последовательности натуральное число, не превышающее ЗОО. Составьте программу, которая получает на вход число членов последовательности, а затем сами числа и подсчитывает:
а) число членов последовательности, оканчивающихся на З; гарантируется, что в последовательности всегда имеется число, оканчивающееся на З;
б) сумму чисел, оканчивающихся на З; гарантируется, что в последовательности всегда имеется число, оканчивающееся на З;
в) максимальное число, оканчивающееся на 4; гарантируется, что в последовательности всегда имеется число, оканчивающееся на 4; г) минимальное число, оканчивающееся на 5; гарантируется, что в последовательности всегда имеется число, оканчивающееся на 5;
д) число членов последовательности, оканчивающихся на 2 и кратных 4; гарантируется, что в последовательности всегда имеется число, оканчивающееся на 2 и кратное 4;
е) среднее арифметическое чисел, оканчивающихся на 5; гарантируется, что в последовательности всегда имеется число, оканчивающееся на 5
Раз такой список, то держи решение в общем виде.
 from functools import reduce

def gather(statfunc, seq):
def incstat(t, x):
return tuple(statfunc[i][0](t[i], x) if statfunc[i][1](x) else t[i] for i in range(len(statfunc)))
return reduce(incstat, seq, tuple(s[2] for s in statfunc))

def ise3(x): return x % 10 == 3
def ise4(x): return x % 10 == 4
def ise5(x): return x % 10 == 5
def ismul4e2(x): return x % 20 == 12

def inc(a, x): return a + 1

tasks = ((inc, ise3, 0, "Количество чисел, оканчивающихся на 3"),
(int.__add__, ise3, 0, "Сумма чисел, оканчивающихся на 3"),
(max, ise4, 0, "Максимальное число, оканчивающееся на 4"),
(min, ise5, 0, "Минимальное число, оканчивающееся на 5"),
(inc, ismul4e2, 0, "Количество чисел, оканчивающихся на 2 и кратных 4"),
(int.__add__, ise5, 0, ""),
(inc, ise5, 0, ""))

n = int(input())
ns = (int(input()) for _ in range(n))

stats = gather(tasks, ns)

print(*(f"{tn}: {k}" for k, (_, _, _, tn) in zip(stats[:-2], tasks[:-2])),
f"Среднее арифметическое чисел, оканчивающихся на 5: {stats[-2]/stats[-1]}",
sep = '\n')

Собираем в tasks параметры индивидуальных заданий, и движок (gather) за один проход вычисляет все нужные статистические агрегаты. Только среднее арифметическое приходится в двух числах собирать, чтоб потом поделить одно на другое.

Пример. На входе:
 8
15
45
13
23
22
24
32
44
На выходе:
 Количество чисел, оканчивающихся на 3: 2
Сумма чисел, оканчивающихся на 3: 36
Максимальное число, оканчивающееся на 4: 44
Минимальное число, оканчивающееся на 5: 0
Количество чисел, оканчивающихся на 2 и кратных 4: 1
Среднее арифметическое чисел, оканчивающихся на 5: 30.0
Александр Тимофеев
Александр Тимофеев
87 571
Лучший ответ
Хизир Сулейманов все же я не понял, что тебе не понравилось в списке, но все равно спасибо
Первая задача-
def count_numbers_ending_with_3(n, sequence):
count = 0
for num in sequence:
if num % 10 == 3:
count += 1
return count

n = 10
sequence = [23, 43, 56, 73, 83, 92, 103, 111, 123, 133]
result = count_numbers_ending_with_3(n, sequence)
print(Итог:", result)