Задание 27 · ЕГЭ, информатика 2027
Анализ данных
Сбор, очистка, модель, прогноз — и новая форма ответа.
Пять вариантов задания
Данные в вариантах разные, приём решения один. Отмеченные галочкой уже решены — отметка хранится в этом браузере.
Выполните полный цикл работы с данными:
1) отбросьте испорченные записи файла A и сосчитайте их количество;
2) по оставшимся записям постройте линейную модель y = k·x + b методом наименьших квадратов;
3) вычислите по этой модели прогноз для последнего номера из файла B и округлите его до целого по правилам математики (0,5 — вверх).
Формат ответа (изменён в 2027 году): ответ — одна строка из двух чисел, разделённых пробелом: сначала количество отброшенных записей, затем округлённый прогноз.
27-A.txt и 27-B.txt — переименуйте или поправьте строку с open(...).Сбор: прочитать оба файла
Файл A разбирается по строкам, каждая строка режется по точке с запятой. Файл B — просто числа.Очистка: что считать браком
Запись испорчена, если полей не два или если поле не преобразуется в число. Оба случая ловятся одинаково: сначала проверяем количество полей, потом пробуем преобразовать и перехватываем ошибку. Выбрасывать «на глаз» нельзя — пустое поле и слово «н/д» выглядят по-разному, но брак одинаковый.Оценка качества
Из 800 записей брака оказалось 42 — это 5,2 %. Такой объём потерь не мешает построить модель: осталось 758 точек, этого более чем достаточно.Выбор модели
Точки ложатся вдоль прямой, поэтому берём линейную модель y = k·x + b. Коэффициенты считаются по формулам метода наименьших квадратов — перебирать их не нужно:k = (n·Σxy − Σx·Σy) / (n·Σx² − (Σx)²),b = (Σy − k·Σx) / n.Преобразование и интерпретация
Для этих данных получается k ≈ 0,8015, b ≈ 80,7950, Подставляем последнее значение из файла B (x = 900) и округляем: 802,123 → 802.Ответ
Одна строка из двух чисел: 42 802.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# --- 1. Сбор и очистка -------------------------------------
xs, ys = [], []
dropped = 0
for line in open('27-A.txt'):
parts = line.strip().split(';')
if len(parts) != 2:
dropped += 1
continue
try: # поле может быть пустым или текстом
x = float(parts[0])
y = float(parts[1])
except ValueError:
dropped += 1
continue
xs.append(x)
ys.append(y)
# --- 2. Модель: метод наименьших квадратов ------------------
n = len(xs)
sx = sum(xs)
sy = sum(ys)
sxx = sum(x * x for x in xs)
sxy = sum(x * y for x, y in zip(xs, ys))
k = (n * sxy - sx * sy) / (n * sxx - sx * sx)
b = (sy - k * sx) / n
# --- 3. Прогноз и интерпретация -----------------------------
xb = [float(line) for line in open('27-B.txt')]
import math
forecast = math.floor(k * xb[-1] + b + 0.5) # 0,5 — вверх
print(dropped, forecast) # одна строка из двух чисел
Где обычно теряют балл
- Записать ответ двумя строками, как это было принято до 2027 года. Форма ответа изменилась: это ОДНА строка из двух чисел.
- Посчитать испорченными только пустые поля и не заметить записи с текстом вместо числа.
- Округлить прогноз функцией round(): в Python она округляет 0,5 к чётному, а в задании требуется «0,5 — вверх».
- Взять прогноз для первого номера из файла B вместо последнего.
Выполните полный цикл работы с данными:
1) отбросьте испорченные записи файла A и сосчитайте их количество;
2) по оставшимся записям постройте линейную модель y = k·x + b методом наименьших квадратов;
3) вычислите по этой модели прогноз для последнего номера из файла B и округлите его до целого по правилам математики (0,5 — вверх).
Формат ответа (изменён в 2027 году): ответ — одна строка из двух чисел, разделённых пробелом: сначала количество отброшенных записей, затем округлённый прогноз.
27-A.txt и 27-B.txt — переименуйте или поправьте строку с open(...).Сбор: прочитать оба файла
Файл A разбирается по строкам, каждая строка режется по точке с запятой. Файл B — просто числа.Очистка: что считать браком
Запись испорчена, если полей не два или если поле не преобразуется в число. Оба случая ловятся одинаково: сначала проверяем количество полей, потом пробуем преобразовать и перехватываем ошибку. Выбрасывать «на глаз» нельзя — пустое поле и слово «н/д» выглядят по-разному, но брак одинаковый.Оценка качества
Из 800 записей брака оказалось 61 — это 7,6 %. Такой объём потерь не мешает построить модель: осталось 739 точек, этого более чем достаточно.Выбор модели
Точки ложатся вдоль прямой, поэтому берём линейную модель y = k·x + b. Коэффициенты считаются по формулам метода наименьших квадратов — перебирать их не нужно:k = (n·Σxy − Σx·Σy) / (n·Σx² − (Σx)²),b = (Σy − k·Σx) / n.Преобразование и интерпретация
Для этих данных получается k ≈ 2,2978, b ≈ 197,5760, Подставляем последнее значение из файла B (x = 900) и округляем: 2265,582 → 2266.Ответ
Одна строка из двух чисел: 61 2266.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# --- 1. Сбор и очистка -------------------------------------
xs, ys = [], []
dropped = 0
for line in open('27-A.txt'):
parts = line.strip().split(';')
if len(parts) != 2:
dropped += 1
continue
try: # поле может быть пустым или текстом
x = float(parts[0])
y = float(parts[1])
except ValueError:
dropped += 1
continue
xs.append(x)
ys.append(y)
# --- 2. Модель: метод наименьших квадратов ------------------
n = len(xs)
sx = sum(xs)
sy = sum(ys)
sxx = sum(x * x for x in xs)
sxy = sum(x * y for x, y in zip(xs, ys))
k = (n * sxy - sx * sy) / (n * sxx - sx * sx)
b = (sy - k * sx) / n
# --- 3. Прогноз и интерпретация -----------------------------
xb = [float(line) for line in open('27-B.txt')]
import math
forecast = math.floor(k * xb[-1] + b + 0.5) # 0,5 — вверх
print(dropped, forecast) # одна строка из двух чисел
Где обычно теряют балл
- Записать ответ двумя строками, как это было принято до 2027 года. Форма ответа изменилась: это ОДНА строка из двух чисел.
- Посчитать испорченными только пустые поля и не заметить записи с текстом вместо числа.
- Округлить прогноз функцией round(): в Python она округляет 0,5 к чётному, а в задании требуется «0,5 — вверх».
- Взять прогноз для первого номера из файла B вместо последнего.
Выполните полный цикл работы с данными:
1) отбросьте испорченные записи файла A и сосчитайте их количество;
2) по оставшимся записям постройте линейную модель y = k·x + b методом наименьших квадратов;
3) вычислите по этой модели прогноз для последнего номера из файла B и округлите его до целого по правилам математики (0,5 — вверх).
Формат ответа (изменён в 2027 году): ответ — одна строка из двух чисел, разделённых пробелом: сначала количество отброшенных записей, затем округлённый прогноз.
27-A.txt и 27-B.txt — переименуйте или поправьте строку с open(...).Сбор: прочитать оба файла
Файл A разбирается по строкам, каждая строка режется по точке с запятой. Файл B — просто числа.Очистка: что считать браком
Запись испорчена, если полей не два или если поле не преобразуется в число. Оба случая ловятся одинаково: сначала проверяем количество полей, потом пробуем преобразовать и перехватываем ошибку. Выбрасывать «на глаз» нельзя — пустое поле и слово «н/д» выглядят по-разному, но брак одинаковый.Оценка качества
Из 800 записей брака оказалось 49 — это 6,1 %. Такой объём потерь не мешает построить модель: осталось 751 точек, этого более чем достаточно.Выбор модели
Точки ложатся вдоль прямой, поэтому берём линейную модель y = k·x + b. Коэффициенты считаются по формулам метода наименьших квадратов — перебирать их не нужно:k = (n·Σxy − Σx·Σy) / (n·Σx² − (Σx)²),b = (Σy − k·Σx) / n.Преобразование и интерпретация
Для этих данных получается k ≈ 3,0991, b ≈ 87,8926, Подставляем последнее значение из файла B (x = 900) и округляем: 2877,067 → 2877.Ответ
Одна строка из двух чисел: 49 2877.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# --- 1. Сбор и очистка -------------------------------------
xs, ys = [], []
dropped = 0
for line in open('27-A.txt'):
parts = line.strip().split(';')
if len(parts) != 2:
dropped += 1
continue
try: # поле может быть пустым или текстом
x = float(parts[0])
y = float(parts[1])
except ValueError:
dropped += 1
continue
xs.append(x)
ys.append(y)
# --- 2. Модель: метод наименьших квадратов ------------------
n = len(xs)
sx = sum(xs)
sy = sum(ys)
sxx = sum(x * x for x in xs)
sxy = sum(x * y for x, y in zip(xs, ys))
k = (n * sxy - sx * sy) / (n * sxx - sx * sx)
b = (sy - k * sx) / n
# --- 3. Прогноз и интерпретация -----------------------------
xb = [float(line) for line in open('27-B.txt')]
import math
forecast = math.floor(k * xb[-1] + b + 0.5) # 0,5 — вверх
print(dropped, forecast) # одна строка из двух чисел
Где обычно теряют балл
- Записать ответ двумя строками, как это было принято до 2027 года. Форма ответа изменилась: это ОДНА строка из двух чисел.
- Посчитать испорченными только пустые поля и не заметить записи с текстом вместо числа.
- Округлить прогноз функцией round(): в Python она округляет 0,5 к чётному, а в задании требуется «0,5 — вверх».
- Взять прогноз для первого номера из файла B вместо последнего.
Выполните полный цикл работы с данными:
1) отбросьте испорченные записи файла A и сосчитайте их количество;
2) по оставшимся записям постройте линейную модель y = k·x + b методом наименьших квадратов;
3) вычислите по этой модели прогноз для последнего номера из файла B и округлите его до целого по правилам математики (0,5 — вверх).
Формат ответа (изменён в 2027 году): ответ — одна строка из двух чисел, разделённых пробелом: сначала количество отброшенных записей, затем округлённый прогноз.
27-A.txt и 27-B.txt — переименуйте или поправьте строку с open(...).Сбор: прочитать оба файла
Файл A разбирается по строкам, каждая строка режется по точке с запятой. Файл B — просто числа.Очистка: что считать браком
Запись испорчена, если полей не два или если поле не преобразуется в число. Оба случая ловятся одинаково: сначала проверяем количество полей, потом пробуем преобразовать и перехватываем ошибку. Выбрасывать «на глаз» нельзя — пустое поле и слово «н/д» выглядят по-разному, но брак одинаковый.Оценка качества
Из 800 записей брака оказалось 49 — это 6,1 %. Такой объём потерь не мешает построить модель: осталось 751 точек, этого более чем достаточно.Выбор модели
Точки ложатся вдоль прямой, поэтому берём линейную модель y = k·x + b. Коэффициенты считаются по формулам метода наименьших квадратов — перебирать их не нужно:k = (n·Σxy − Σx·Σy) / (n·Σx² − (Σx)²),b = (Σy − k·Σx) / n.Преобразование и интерпретация
Для этих данных получается k ≈ 3,1005, b ≈ 144,6841, Подставляем последнее значение из файла B (x = 900) и округляем: 2935,154 → 2935.Ответ
Одна строка из двух чисел: 49 2935.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# --- 1. Сбор и очистка -------------------------------------
xs, ys = [], []
dropped = 0
for line in open('27-A.txt'):
parts = line.strip().split(';')
if len(parts) != 2:
dropped += 1
continue
try: # поле может быть пустым или текстом
x = float(parts[0])
y = float(parts[1])
except ValueError:
dropped += 1
continue
xs.append(x)
ys.append(y)
# --- 2. Модель: метод наименьших квадратов ------------------
n = len(xs)
sx = sum(xs)
sy = sum(ys)
sxx = sum(x * x for x in xs)
sxy = sum(x * y for x, y in zip(xs, ys))
k = (n * sxy - sx * sy) / (n * sxx - sx * sx)
b = (sy - k * sx) / n
# --- 3. Прогноз и интерпретация -----------------------------
xb = [float(line) for line in open('27-B.txt')]
import math
forecast = math.floor(k * xb[-1] + b + 0.5) # 0,5 — вверх
print(dropped, forecast) # одна строка из двух чисел
Где обычно теряют балл
- Записать ответ двумя строками, как это было принято до 2027 года. Форма ответа изменилась: это ОДНА строка из двух чисел.
- Посчитать испорченными только пустые поля и не заметить записи с текстом вместо числа.
- Округлить прогноз функцией round(): в Python она округляет 0,5 к чётному, а в задании требуется «0,5 — вверх».
- Взять прогноз для первого номера из файла B вместо последнего.
Выполните полный цикл работы с данными:
1) отбросьте испорченные записи файла A и сосчитайте их количество;
2) по оставшимся записям постройте линейную модель y = k·x + b методом наименьших квадратов;
3) вычислите по этой модели прогноз для последнего номера из файла B и округлите его до целого по правилам математики (0,5 — вверх).
Формат ответа (изменён в 2027 году): ответ — одна строка из двух чисел, разделённых пробелом: сначала количество отброшенных записей, затем округлённый прогноз.
27-A.txt и 27-B.txt — переименуйте или поправьте строку с open(...).Сбор: прочитать оба файла
Файл A разбирается по строкам, каждая строка режется по точке с запятой. Файл B — просто числа.Очистка: что считать браком
Запись испорчена, если полей не два или если поле не преобразуется в число. Оба случая ловятся одинаково: сначала проверяем количество полей, потом пробуем преобразовать и перехватываем ошибку. Выбрасывать «на глаз» нельзя — пустое поле и слово «н/д» выглядят по-разному, но брак одинаковый.Оценка качества
Из 800 записей брака оказалось 64 — это 8,0 %. Такой объём потерь не мешает построить модель: осталось 736 точек, этого более чем достаточно.Выбор модели
Точки ложатся вдоль прямой, поэтому берём линейную модель y = k·x + b. Коэффициенты считаются по формулам метода наименьших квадратов — перебирать их не нужно:k = (n·Σxy − Σx·Σy) / (n·Σx² − (Σx)²),b = (Σy − k·Σx) / n.Преобразование и интерпретация
Для этих данных получается k ≈ 4,1984, b ≈ 29,9858, Подставляем последнее значение из файла B (x = 900) и округляем: 3808,523 → 3809.Ответ
Одна строка из двух чисел: 64 3809.
Эталонная программа (Python)
Программа не исполняется на странице: задание проверяет умение написать её самому. Перенесите текст в свою среду и запустите там.
# --- 1. Сбор и очистка -------------------------------------
xs, ys = [], []
dropped = 0
for line in open('27-A.txt'):
parts = line.strip().split(';')
if len(parts) != 2:
dropped += 1
continue
try: # поле может быть пустым или текстом
x = float(parts[0])
y = float(parts[1])
except ValueError:
dropped += 1
continue
xs.append(x)
ys.append(y)
# --- 2. Модель: метод наименьших квадратов ------------------
n = len(xs)
sx = sum(xs)
sy = sum(ys)
sxx = sum(x * x for x in xs)
sxy = sum(x * y for x, y in zip(xs, ys))
k = (n * sxy - sx * sy) / (n * sxx - sx * sx)
b = (sy - k * sx) / n
# --- 3. Прогноз и интерпретация -----------------------------
xb = [float(line) for line in open('27-B.txt')]
import math
forecast = math.floor(k * xb[-1] + b + 0.5) # 0,5 — вверх
print(dropped, forecast) # одна строка из двух чисел
Где обычно теряют балл
- Записать ответ двумя строками, как это было принято до 2027 года. Форма ответа изменилась: это ОДНА строка из двух чисел.
- Посчитать испорченными только пустые поля и не заметить записи с текстом вместо числа.
- Округлить прогноз функцией round(): в Python она округляет 0,5 к чётному, а в задании требуется «0,5 — вверх».
- Взять прогноз для первого номера из файла B вместо последнего.
Анализ данных: полный цикл
Номер 27 в 2027 году стал заданием на работу с данными целиком: сбор, очистка, оценка качества, выбор модели, преобразование, визуализация и интерпретация результата.
Очистка. Запись считается испорченной, если полей не столько,
сколько нужно, или если поле не преобразуется в число. Оба случая
ловятся одинаково: проверить количество полей, затем попробовать
преобразовать и перехватить ошибку через try / except
ValueError. «На глаз» брак не отсекают — пустое поле и слово
«н/д» выглядят по-разному, а по сути одинаковы.
Оценка качества. Полезно сразу посчитать долю брака: если испорчена половина данных, модель строить нельзя, и об этом надо сказать.
Линейная модель методом наименьших квадратов:
k = (n·Σxy − Σx·Σy) / (n·Σx² − (Σx)²),
b = (Σy − k·Σx) / n.
Форма ответа изменена в 2027 году: это одна строка из двух чисел, а не две строки. Ответ в старом формате не засчитывается.
Про округление. Функция round() в Python округляет
0,5 к чётному. Если в задании сказано «0,5 — вверх», пишите
math.floor(x + 0.5).
Где эта тема разобрана подробно
Структура раздела и темы заданий соответствуют кодификатору и спецификации ФИПИ. Задания и файлы данных составлены редакцией reknow.ru. План варианта приведён по проекту спецификации и демоверсии ФИПИ 2027 года. После публикации утверждённой версии информация будет обновлена.