К содержанию

Задание 9

Электронные таблицы

Как проверить каждую строку таблицы чисел по условию и посчитать подходящие — формулами и программой.

6 подтем · 35 задач + 6 дополнительных · базовый · ≈ 6 мин

Подтема 1 из 6

Строка и условие

Как перевести условие в точные проверки и посчитать подходящие строки — в таблице и программой.

Как устроена тема

В задании 9 дан файл с таблицей чисел. Нужно проверить каждую строку по условию и посчитать, сколько строк подошло, — или найти номер нужной строки. Вот задача, которую мы будем решать всю тему:

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

Каждую строку проверяют отдельно: в электронной таблице — вспомогательными столбцами, в Python — циклом по строкам файла. Сначала разберём, что сказано в условии:

В условииЧто это значит
одно число повторяется дважды, остальные четыре различныв строке ровно одна пара одинаковых чисел
среднее неповторяющихся больше суммы повторяющихсясравнить среднее четырёх чисел с суммой пары
выполнены оба условияподходят строки, где верно и то и другое
определи количество строкответ — сколько строк подошло

В экзаменационном файле тысячи строк. Учиться удобнее на маленькой таблице — шесть строк по шесть чисел: каждую проверку можно повторить вручную.

СтрокаABCDEF
12257911
2551379
32255911
42227911
5334578
67720222426

Тема состоит из шести подтем — у каждой своя страница. Идём по ним по порядку:

  1. Строка и условие — ты сейчас здесь.
  2. Сумма, наибольшее и наименьшее — наибольшие числа, сумма остальных и средние.
  3. Повторы в строке — сколько раз встречается каждое число.
  4. Две группы чисел — повторяющиеся и одиночные числа — и ответ задачи темы: 2.
  5. Порядок и номер строки — когда спрашивают не количество, а номер.
  6. Вся таблица и соседние ячейки — дополнительный урок для редких задач.

Задачу можно решить и в электронной таблице, и программой — выбирай вкладку «Таблица» или «Python». На экзамене подойдёт любой способ, а второй пригодится для проверки.

Условие — буквально

Пятая строка — 3, 3, 4, 5, 7, 8. Среднее неповторяющихся чисел (4 + 5 + 7 + 8) / 4 = 6, сумма повторяющихся 3 + 3 = 6. Подходит ли она под задачу темы?

Условие переводят в сравнения дословно: «больше» — знак >, «не меньше» — знак ≥. Среднее 6 не больше 6, поэтому пятая строка не подходит. Если бы в условии было «не меньше», она бы подошла, и ответ стал бы 3. Равенство — первый случай, на котором проверяют решение. Выбери формулировку, чтобы увидеть запись:

a больше b
a > b
a не меньше b
a ≥ bравенство подходит
a не больше b
a ≤ bравенство подходит
a не превышает b
a ≤ bто же, что «не больше»
ровно три числа
количество = 3
не менее трёх
количество ≥ 3
хотя бы одно
количество ≥ 1
ни одного
количество = 0

Различай «на» и «в»: «a больше b на 5» — a = b + 5, «a больше b в 5 раз» — a = 5b, «a больше b более чем в три раза» — a > 3b. Например, «наименьшее число более чем в шесть раз меньше суммы остальных» — это 6 · m < S − m, где m — наименьшее, S — сумма строки.

Несколько условий

Проверки строки соединяют так, как сказано в условии: «оба» — и, «хотя бы одно» — или, «ровно одно» — одно из двух, но не оба. Результат отдельной проверки — да или нет: в таблице ИСТИНА и ЛОЖЬ, в Python True и False.

Пусть P — «сумма больше 35», Q — «наибольшее меньше 10». У первой строки сумма 36, а наибольшее 11: P верна, Q нет. Под «оба условия» строка не подходит, под «хотя бы одно» и «ровно одно» — подходит.

PQОбаХотя бы одноРовно одно
нетнетнетнетнет
нетданетдада
данетнетдада
дадададанет

Главное различие — в последней строке таблицы: «хотя бы одно» допускает оба, «ровно одно» — нет.

Тонкости:одно число или разные

В строке 3, 8, 11 есть чётное число — 8 и есть число больше 10 — 11. Поэтому «есть чётное число и есть число больше 10» верно. А «есть чётное число, которое больше 10», неверно: здесь оба условия должно выполнять одно и то же число.

Признак и счётчик

Сколько строк учебной таблицы имеют сумму больше 30?

Каждую строку проверяют отдельно и учитывают один раз: в таблице — признаком 1 или 0, в программе — счётчиком. Ответ — сколько строк прошли проверку.

Таблица

Числа строки 1 занимают A1:F1. Справа от них ставят вспомогательные столбцы: СУММ даёт сумму, а ЕСЛИ превращает проверку в 1 или 0:

G1=СУММ(A1:F1)
H1=ЕСЛИ(G1>30;1;0)

Обе формулы до последней строки данных: каждая строка проверяет свои числа. Ответ — сумма признаков в H7:

H2=ЕСЛИ(G2>30;1;0)
ABCDEFGH
12257911361
2551379300
32255911341
42227911331
5334578300
677202224261061
74
Формулы в ячейках
  • G1скопирована до G6=СУММ(A1:F1)
  • H1скопирована до H6=ЕСЛИ(G1>30;1;0)
  • H7=СУММ(H1:H6)

Подходят строки 1, 3, 4 и 6. Вторая и пятая дают ровно 30 и получают 0. Поменяй любое число второй строки — её признак пересчитается.

Несколько проверок соединяют функциями И и ИЛИ, «ровно одно» — сравнением двух проверок знаком <> («не равно»):

=ЕСЛИ(И(СУММ(A1:F1)>35;МАКС(A1:F1)<10);1;0)
=ЕСЛИ(ИЛИ(СУММ(A1:F1)>35;МАКС(A1:F1)<10);1;0)
=ЕСЛИ((СУММ(A1:F1)>35)<>(МАКС(A1:F1)<10);1;0)

При протягивании вниз =СУММ(A1:F1) становится =СУММ(A2:F2) — так работают . Вместо суммы признаков можно включить фильтр по столбцу признака — он покажет только подходящие строки (подтема 5).

Python

Строки таблицы можно записать строк, где каждая строка — тоже список. Цикл берёт строки по очереди, проверяет сумму, а answer += 1 учитывает подходящую строку. Нажми «Запуск» и пройди программу по шагам:

table = [    [2, 2, 5, 7, 9, 11],    [5, 5, 1, 3, 7, 9],    [2, 2, 5, 5, 9, 11],    [2, 2, 2, 7, 9, 11],    [3, 3, 4, 5, 7, 8],    [7, 7, 20, 22, 24, 26],]answer = 0for a in table:    if sum(a) > 30:        answer += 1print(answer)
4

С файлом меняется только начало: программа по строкам, делит строку на части, а с переводит их в числа:

answer = 0with open("9.txt") as f:    for line in f:        a = [int(part) for part in line.split()]        if sum(a) > 30:            answer += 1print(answer)
4

answer = 0 стоит до цикла, чтобы ответ не обнулялся; список a строится заново для каждой строки; print(answer) — после цикла.

дают сумму, наименьшее и наибольшее число строки. Проверки соединяют , «ровно одно» — сравнением !=:

a = [2, 2, 5, 7, 9, 11]p = sum(a) > 35q = max(a) < 10print(p, q)print(p and q, p or q, p != q)
True False False True True

Файл задачи

Файл задачи открывают в электронной таблице как есть, а для программы сохраняют текстом. На экзамене дают таблицу — .xlsx, .ods или .csv. Файл .xlsx или .ods нельзя прочитать программой как текст: внутри хранятся листы и ячейки в сжатом виде.

  1. Открой файл в электронной таблице.
  2. Сохрани его как текст — «Текст (разделитель — табуляция)» или — в папку с программой.
  3. Открой получившийся файл в блокноте и посмотри, чем разделены числа.

От разделителя зависит запись split. Выбери, как выглядит строка файла:

2 2 5 7 9 11
line.split()
числа разделены табуляциями
line.split()
2;2;5;7;9;11
line.split(";")
2,2,5,7,9,11
line.split(",")

Без аргумента split() делит строку по любым пробелам и табуляциям. Для задач ниже даны оба файла: таблица .xlsx и та же таблица текстом .txt.

Тонкости:что не должно попасть в файл

В текстовый файл должны попасть только исходные числа: без строки заголовков, вспомогательных столбцов с формулами и пустых строк. Иначе int встретит текст и программа остановится с ошибкой.

В чужих решениях строку переводят в числа записью — она делает то же, что включение [int(part) for part in line.split()].

Итого

  • Условиедословно: «больше» — >, «не меньше» — ≥; проверь равенство
  • Оба, хотя бы, ровноИ, ИЛИ, <>; and, or, !=
  • Признак=ЕСЛИ(…;1;0), протянуть, сложить
  • Счётчикanswer = 0 до цикла, += 1 после проверки строки
  • Файлсохранить текстом, делить по разделителю

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Переведи в неравенства и равенства: «a не превышает b», «a больше b на 7», «a больше b в 3 раза», «x более чем в 4 раза меньше y».
ОтветСкрыть ответ
Ответ
a ≤ b; a = b + 7; a = 3b; 4x < y.
Вопрос 2
Для строки 2, 2, 5, 7, 9, 11 и проверок «сумма больше 34» и «наименьшее больше 2» ответь: выполнены ли оба условия, хотя бы одно, ровно одно?
ОтветСкрыть ответ
Ответ
Сумма 36 больше 34, а наименьшее 2 не больше 2: оба — нет, хотя бы одно — да, ровно одно — да.
Вопрос 3
В строке 4, 9, 13 есть чётное число? Есть число больше 10? Есть чётное число больше 10?
ОтветСкрыть ответ
Ответ
Да (4), да (13), нет: чётное 4 не больше 10, а 13 нечётное.
Вопрос 4
Сколько строк учебной таблицы имеют сумму больше 30, а сколько — не меньше 30?
ОтветСкрыть ответ
Ответ
4 и 6: суммы второй и пятой строк равны 30 — они подходят только под «не меньше».
Вопрос 5
Запиши признак строки 1 для условия «сумма больше 30 и наименьшее число не больше 2». Сколько строк учебной таблицы подходят?
ОтветСкрыть ответ
Ответ
=ЕСЛИ(И(СУММ(A1:F1)>30;МИН(A1:F1)<=2);1;0); подходят 3 строки — первая, третья и четвёртая. У шестой строки сумма 106, но наименьшее 7.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

«Не меньше» и «больше»

Сколько строк учебной таблицы имеют сумму чисел не меньше 34?

9.txtУчебная таблица подтемы 1: шесть строк по шесть чиселТекстовый файл · 79 Б

Введите число.

Ровно одно из двух условий

Для той же таблицы 9-1.xlsx, 9-1.txt определи количество строк, для которых выполнено ровно одно из условий: наибольшее число строки больше 95; наименьшее число строки меньше 5.

9-1.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 31,0 КБ9-1.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 17,1 КБ

Введите число.

Числа и строки

Сколько строк учебной таблицы содержат хотя бы одно число больше 8?

9.txtУчебная таблица подтемы 1: шесть строк по шесть чиселТекстовый файл · 79 Б

Введите число.

Сумма и наибольшее число

В каждой строке таблицы 9-1.xlsx, 9-1.txt записаны шесть натуральных чисел. Определи количество строк, в которых сумма чисел больше 300, а наибольшее число строки меньше 90.

9-1.xlsxТаблица чисел — Excel-файл, как на экзаменеExcel · 31,0 КБ9-1.txtТа же таблица текстом: строка файла — строка таблицы, числа через пробелТекстовый файл · 17,1 КБ

Введите число.