Top.Mail.Ru

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

11 класс

Поделиться статьей:

Informatics

Решение задания № 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]
Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

Практикум

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

Задание 1

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

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

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

Создаём список, который показывает, сколько раз встречается каждое число в строке. Если в нём три раза встречается 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, которая содержит в каждой строке четыре натуральных числа. Рассматриваются строки, которые соответствуют условиям:

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

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

Для проверки третьего условия можно пойти двумя путями: перебрать все пары чисел или отсортировать список 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, которая содержит в каждой строке четыре натуральных числа. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия:

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

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

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

Есть и альтернативный способ — создать массив с помощью генератора списков, в который мы запишем количество повторений каждой из цифр. Если в этом списке число 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б ты пробьёшь свой
максимум на экзаменах

наши лучшие курсы

Выбери подходящий курс и предмет, чтобы прокачаться и сдать ОГЭ на «5», а ЕГЭ на 80+ баллов

Выбрать курс

бесплатные материалы

Курсы, вебы, чек-листы — всё за 0 ₽

Забрать за 0 ₽

Интенсив по поступлению

Запишись на интенсив по поступлению, чтобы
взять из ЕГЭ максимум и попасть в вуз мечты

Записаться
В 100балльном репетиторе ты пробьёшь свой максимум на экзаменах

Преимущества подготовки
в 100балльном

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

18
выпускников сдали ЕГЭ
на 200 из 200 в 2024 году

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

14%
стобалльников России — наши выпускники

2 347
выпускника сдали ЕГЭ на 100 баллов

Преимущества подготовки в 100балльном

Запишись
на бесплатный
вводный урок

Познакомим с преподавателями и платформой

Расскажем про учёбу

Поможем поставить цель

  • 11 класс
  • 10 класс
  • 9 класс
  • 8 класс
  • 7 класс
Запись на вводный урок

Список всех тем