Откройте файл электронной таблицы, содержащей в каждой строке...
Задание
Откройте файл электронной таблицы, содержащей в каждой строке пять натуральных чисел. Определите количество строк таблицы, для которых выполнены оба условия:
- в строке все числа различны;
- удвоенная сумма максимального и минимального чисел строки больше суммы оставшихся трёх её чисел.
В ответе запишите только число.
Решение
for line in open('demo_9.csv'):
nums = sorted([int(x) for x in line.split(';')])
q += len(set(nums)) == 5 and 2 * (nums[0] + nums[-1]) > sum(nums[1:-1])
print(q)
Разбор кода. Файл demo_9.csv читается построчно, каждая строка разбивается по точке с запятой и превращается в список из пяти чисел. Список сразу сортируется — так проще работать с минимумом и максимумом: nums[0] даёт минимальное число, nums[-1] — максимальное, а срез nums[1:-1] — три оставшихся числа.
Условие «все числа различны» проверяется через len(set(nums)) == 5: множество отбрасывает дубликаты, и если в нём оказалось ровно пять элементов, значит, все числа в строке разные. Второе условие записано напрямую по формуле задачи: 2 * (nums[0] + nums[-1]) > sum(nums[1:-1]) — удвоенная сумма минимума и максимума строго больше суммы средних трёх чисел.
Ключевой момент: в Python логическое выражение True/False можно прибавлять к числу как 1/0. Поэтому строка q += условие1 and условие2 увеличивает счётчик ровно тогда, когда оба условия истинны. Это позволяет обойтись без вложенных if.
Ответ: 4874