Top.Mail.Ru
Ответы

Помогите найти ошибку в коде

ответ должен быть 373, у меня получается 517
Вот условие: Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:

— в строке только одно число повторяется ровно два раза, остальные числа различны;

— среднее арифметическое неповторяющихся чисел строки не больше суммы повторяющихся чисел.

В ответе запишите только число.
таблица - https://3.shkolkovo.online/st/7/o/9__1r8bv.xlsx


Мой код=
k = 0
for s in open('09.txt'):
a = [int(x) for x in s.split()]
a1 = [x for x in a if a.count(x) == 2]
a2 = [x for x in a if a.count(x) == 1]
if len(a1)== 2 and len(a2)== 4:
if (len(a2) * 2 / 4 ) <= sum(a1):
k += 1

print(k)

По дате
По Рейтингу
Аватар пользователя
Знаток
3мес

Хоть бы язык какой сказал для приличия

Аватар пользователя
Высший разум
3мес

У тебя ошибочное условие в if:

1
 if sum(a2) / 4 <= sum(a1): 
Аватар пользователя
Мыслитель
3мес

k = 0
for s in open('09.txt'):
a = list(map(int, s.split()))
counts = {}
for num in a:
counts[num] = counts.get(num, 0) + 1

duplicates = [num for num, cnt in counts.items() if cnt == 2]
uniques = [num for num, cnt in counts.items() if cnt == 1]

if len(duplicates) == 1 and len(uniques) == 4:
sum_duplicates = duplicates[0] * 2
sum_uniques = sum(uniques)
if (sum_uniques / 4) <= sum_duplicates:
k += 1

print(k)