Источник: https://kpolyakov.spb.ru/
В файле электронной таблицы 9-191.xls в каждой строке записаны 6 натуральных чисел.
Определите количество строк таблицы, для которых выполнены оба условия:
– в строке есть как повторяющиеся, так и неповторяющиеся числа;
– среднее арифметическое всех неповторяющихся чисел строки больше, чем среднее арифметическое всех повторяющихся чисел этой строки.
При вычислении средних значений каждое число учитывается столько раз, сколько оно встречается в строке.
Решение при помощи электронных таблиц
Для начала посчитаем, сколько раз встречается в строке каждое число. Для этого в ячейку запишем формулу:
и растягиваем ее вправо до ячейки и вниз до конца таблицы.
В столбце найдем среднее арифметическое всех неповторяющихся чисел строки, для этого в ячейку
запишем формулу:
и растягиваем ее вниз до конца таблицы.
В столбце найдем среднее арифметическое всех повторяющихся чисел строки, для этого в ячейку
запишем формулу:
В некоторых строках столбцов и
появились значения #Н/Д, поэтому с помощью фильтра нужно их убрать. Одновременно таким образом будет выполняться первое условие задачи.
В столбце проверим выполнение второго условия:
Решение программой
f = open(’9-191.xls’) # Открываем файл
c = 0 # Счетчик для строк
for i in f: # Проходимся по файлу
a = list(map(int, i.split(’;’))) # Преобразовываем элементы строки в int
# и убираем разделители
t = [a.count(j) == 1 for j in a] # Проверка на то, что число повторяется
# в строке ровно один раз
if any(t) and len(set(a)) < 6: # Если есть и повторяющиеся,
# и неповторяющиеся числа
sn = [j for j in a if a.count(j) == 1] # Список из
# неповторяющихся чисел
sp = [j for j in a if a.count(j) > 1] # Список из
# повторяющихся чисел
sn = sum(sn) / len(sn) # Среднее арифметическое всех
# неповторяющихся чисел
sp = sum(sp) / len(sp) # Среднее арифметическое всех
# повторяющихся чисел
if sn > sp: # Проверяем, что среднее арифметическое всех
# неповторяющихся чисел больше, чем среднее арифметическое всех повторяющихся чисел
c += 1 # Увеличиваем счетчик
print(c) # Выводим ответ