Top.Mail.Ru

Обработка числовой информации в электронных таблицах

1.5К 135 ~5 мин
  • ЕГЭ
  • 11 класс

Решение задания № 9 ЕГЭ по информатике с помощью Python — универсальный и надёжный способ, который часто оказывается быстрее и удобнее, чем работа в электронных таблицах. Такой подход позволяет автоматизировать проверку условий и эффективно обрабатывать большие объёмы данных.

Термины, которые будем использовать: алгоритм, логические выражения, логические операторы.

Основной алгоритм решения

Решение любой задачи № 9 на Python строится по шаблону:

  1. Открыть файл с данными. Файл с исходной таблицей (обычно в формате .txt или .csv) поместить в ту же папку, где находится программа, чтобы открыть его командой open(‘9.txt’).
  2. Создать переменную, которая будет подсчитывать количество строк, удовлетворяющих условию, например count = 0.
  3. Использовать цикл for line in open(‘9.txt’):, чтобы пройтись по каждой строке файла, и с помощью split() разбить строку на отдельные элементы, а затем преобразовать каждый из них в целое число (int). Например: numbers = [int(x) for x in line.split()].
  4. Проанализировать числа строки a:
    • Сортировка. Чтобы найти минимальное или максимальное значения, удобно использовать sorted(a), который вернёт новый отсортированный список.
    • Подсчёт повторений. Метод a.count(x) покажет, сколько раз число x встречается в строке. Часто удобно разделить все числа на три группы:
      • povtor3 = [x for x in a if a.count(x) == 3] — числа, которые встречаются трижды;
      • povtor2 = [x for x in a if a.count(x) == 2] — числа, которые встречаются дважды;
      • uniq = [x for x in a if a.count(x) == 1] — уникальные числа.
    • Проверка на повторения. С помощью len(set(a)) можно узнать количество уникальных чисел. Если оно равно общему количеству чисел в строке (len(a)), значит, все числа различны.
    • Сравнение исходного списка a с его отсортированной версией sorted(a). Если они равны, значит, числа расположены по возрастанию.
    • Проверка на чётность. x % 2 == 0 вернёт True для чётного числа, а x % 2 != 0 — для нечётного.
  5. Составить логическое выражение с помощью операторов and и or, которое объединяет все условия из задания.
  6. Если условия для строки выполнены, увеличить счётчик (count += 1) либо добавить сумму чисел строки в список res.append(sum(a)).
  7. После завершения цикла вывести на экран нужное значение: количество строк (print(count)), сумму или номер строки.

Вот как перевести типичные условия из заданий в код на Python:

Тип условия на русском языкеРеализация на Python (синтаксис)
Самое большое число меньше суммы трёх остальныхmax(a) < sum(a) − max(a)
Все числа различныlen(set(a)) == len(a)
Числа расположены по возрастаниюa == sorted(a)
Одно число повторяется трижды, остальные различныlen(povtor3) == 3 and len(uniq) == 3
Количество чётных и нечётных чисел одинаковоlen([x for x in a if x%2==0]) == len([x for x in a if x%2!=0])
Любое число повторяется от двух до трёх разa.count(x) in (2, 3) (для конкретного x)
Среднее арифметическое уникальных чисел меньше повторяющегосяsum(uniq)/len(uniq) < povtor3[0]
Подготовка к экзаменам в 100балльном репетиторе

Практикум

Применим наш алгоритм к решению реальных задач из ЕГЭ.

Задание 1

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

  • в строке есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
  • максимальное число строки не повторяется.

В ответе запишите только число. [i]

Создаём список, который показывает, сколько раз встречается каждое число в строке. Если в нём три раза встречается 1 и четыре раза — 2, это значит, что в строке есть три уникальных числа и два числа, повторяющихся по два раза.

Затем проверяем второе условие: максимальное число должно встречаться ровно один раз. Поскольку требуется найти строку с наименьшим номером, при первом подходящем варианте сразу выводим сумму чисел и прерываем цикл с помощью break.

f = open(‘9.txt’)

for s in f:

a = [int(x) for x in s.split()]

povt = [a.count(x) for x in a]

# Проверяем: два числа встречаются дважды (всего четыре двойки в povt),

# и три числа встречаются один раз (всего три единицы в povt)

if povt.count(2) == 4 and povt.count(1) == 3:

# Проверяем, что максимальное число встречается ровно один раз

if a.count(max(a)) == 1:

print(sum(a))

break

f.close()

Ответ: 261.

Задание 2

Откройте файл электронной таблицы 9_2.xlsx, которая содержит в каждой строке четыре натуральных числа. Рассматриваются строки, которые соответствуют условиям:

  • максимальное число меньше суммы оставшихся трёх чисел;
  • суммы пар чисел не равны друг другу.

В ответе укажите номер последней подходящей строки. [i]

Для проверки третьего условия можно пойти двумя путями: перебрать все пары чисел или отсортировать список a. Во втором случае достаточно сравнить суммы: если сумма минимального и максимального элементов не равна сумме двух оставшихся, условие выполняется.

Так как требуется найти номер последней подходящей строки, введём два счётчика: ns — номер текущей строки (увеличивается на каждой итерации) и maxns — номер последней строки, удовлетворяющей условиям. При выполнении условия будем обновлять maxns.

f = open(‘9.txt’)

ns, maxns = 0, 0

for s in f:

ns += 1

a = [int(x) for x in s.split()]

if max(a) < (sum(a) — max(a)):

a.sort()

if a[0] + a[3] != a[1] + a[2]:

maxns = max(maxns, ns)

print(maxns)

f.close()

Ответ: 3200.

Задание 3

Откройте файл электронной таблицы 9_2.xlsx, которая содержит в каждой строке четыре натуральных числа. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:

  • наибольшее из четырёх чисел меньше суммы оставшихся трёх чисел;
  • среди четырёх чисел есть только одна пара равных чисел.

В ответе укажите количество подходящих четвёрок. [i]

Чтобы среди четырёх чисел была ровно одна пара одинаковых, достаточно проверить, что количество различных значений равно трём.

Есть и альтернативный способ — создать массив с помощью генератора списков, в который мы запишем количество повторений каждой из цифр. Если в этом списке число 2 встречается два раза, значит, ровно одно число повторяется дважды, и условие выполнено.

f = open(‘9.txt’)

k = 0

for s in f:

a = [int(x) for x in s.split()]

if max(a) < (sum(a) — max(a)):

povt = [a.count(x) for x in a] # Массив: сколько раз встретилось каждое число в строке

if povt.count(2) == 2: # Только одно число встречается дважды

k += 1

print(k)

f.close()

Ответ: 133.

Заключение

Теперь ты умеешь переводить условия задач из таблиц в логические выражения на Python и обрабатывать данные построчно. Ты знаешь основные приёмы: подсчёт повторений, проверку уникальности, сортировку и объединение условий с помощью and и or. Это позволит уверенно решать задания № 9 ЕГЭ — находить нужные строки, считать их количество и определять их номера.

Понравилась статья?

Подготовка к экзаменам в 100балльном репетиторе

Похожие статьи

С нами ты получишь высокие баллы на ЕГЭ и ОГЭ

№ 1 по стобалльникам
№ 1 по стобалльникам

Мы выпускаем больше всего стобалльников в России (в 2025 году каждый 7-й - наш выпускник)

430k+ учеников поступили в вузы мечты 430k+

Учеников поступили
в вузы мечты с нашей
помощью

11+ лет средний опыт наших преподавателей 11+

лет средний опыт наших преподавателей

Мы знаем, как забрать максимум на экзамене

Мы знаем, как забрать максимум на экзамене

Отправим стратегию подготовки к экзаменам на бесплатной консультации

  • Оценим текущий уровень знаний
  • Подскажем, с чего начать
  • Дадим понятный план действий
  • 11 класс
  • 10 класс
  • 9 класс
  • 8 класс
  • 7 класс