Задание №9 — Обработка числовой информации
Откройте файл электронной таблицы, содержащей в каждой строке семь натуральных чисел. Определите количество строк таблицы, для чисел которых выполнены оба условия:
– в строке есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
– среднее арифметическое всех повторяющихся чисел строки меньше среднего арифметического всех её чисел.
В ответе запишите только число.
Правильный ответ
83
Пояснение
Решение:
В каждой строке таблицы семь чисел. Первое условие означает, что набор кратностей значений в строке равен : ровно два значения встречаются по два раза, а оставшиеся три числа попарно различны, то есть всего в строке ровно пять различных значений.
«Повторяющиеся числа» — это те четыре ячейки, которые образуют пары. Если пары составлены из чисел и , то их среднее равно , и его нужно сравнить со средним всех семи чисел строки.
Удобнее всего открыть csv-версию файла программой: для каждой строки построить счётчик значений, проверить кратности и сравнить два средних.
from collections import Counter
count = 0
for line in open('9.csv', encoding='utf-8'):
row = [int(x) for x in line.split(';')]
c = Counter(row)
pairs = [v for v in c if c[v] == 2]
if len(pairs) == 2 and len(c) == 5:
rep = [x for x in row if c[x] == 2]
if sum(rep) / len(rep) < sum(row) / len(row):
count += 1
print(count)Условие len(pairs) == 2 and len(c) == 5 как раз и означает «две пары плюс три различных числа». Программа просматривает все 16 000 строк и находит 83 подходящие.Ответ: 83