Python для ЕГЭ по информатике: какие задания решать программой

опубликовано
читать
≈ 5 мин
автор
среда и версия
Python 3.14.2 в браузере (Pyodide 314.0.3) — там же, где запускаются примеры на странице; вывод совпал с CPython 3.14.7
содержание решать задачи Python для начинающих

ЕГЭ по информатике сдают на компьютере, и многие задания удобнее решить программой, чем на бумаге: программа переберёт все варианты и не ошибётся в счёте. Ниже — какие задания решают кодом, что из Python для этого нужно и короткие шаблоны, которые запускаются прямо на странице. Номера заданий даны по демоверсии 2026 года; в проекте 2027 года три задания меняются, об этом — в разделе «Что меняется в ЕГЭ-2027».

ЕГЭ / 01

Задание программой: перебрать, проверить, посчитать

Задание программой: перебрать, проверить, посчитатьЗадача: сколько слов из четырёх букв К, О, Д, в которых нет двух О подряд. Шаг 1: product('КОД', repeat=4) перебирает все 81 слово — КККК, КККО и так до ДДДД. Шаг 2: проверка 'ОО' not in word отсеивает 21 слово, например КООД и ООКД. Шаг 3: остаётся 60 слов — это ответ. Так же решают задания 2, 8, 15 и 25: меняются только варианты и проверка.1 · все слова2 · проверка3 · ответproduct('КОД', repeat=4)'ОО' not in word6081 слово: КККК, КККО … ДДДДотсеяно 21: КООД, ООКД …81 − 21 = 60 словтак же решают задания 2, 8, 15 и 25: меняются только варианты и проверка
Программа не рассуждает, а перебирает: product выдаёт все 81 слово, проверка оставляет 60. В счёте она не ошибётся — ошибиться можно только в условии проверки, поэтому его сверяют с заданием.

Какие задания решают программой

Номера проще запоминать по приёмам: один приём закрывает сразу несколько заданий.

  • Перебор вариантов — задания 2, 8, 15 и 25. Программа проверяет все наборы значений, слова или числа и считает подходящие: циклы for, itertools.product и permutations.
  • Двоичная запись и системы счисления — задания 5 и 14: bin(), int(s, основание) и перевод делением с остатком.
  • Строки — задания 12 и 24: replace, count, оператор in и проход по строке циклом.
  • Рекурсия — задания 16, 19–21 и 23: функция, которая вызывает сама себя, и lru_cache, чтобы не считать одно и то же дважды.
  • Файлы — задания 17, 24, 26 и 27: open() читает файл с данными, дальше работают списки и циклы.
  • Готовые модули — задание 6 решает черепаха turtle, задание 13 об адресах и масках сети — модуль ipaddress.

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

Что меняется в ЕГЭ-2027

ФИПИ опубликовал проект демоверсии ЕГЭ-2027, и до утверждения его ещё могут поправить. Заданий по-прежнему 27, а темы трёх из них меняются:

  • задание 10 о поиске в текстовом редакторе убирают;
  • адреса и маски сети переходят из задания 13 в задание 10;
  • анализ алгоритма для исполнителя переходит из задания 23 в задание 13;
  • новое задание 23 — о графах: поиск оптимального пути и подсчёт путей.

Задания 2, 5, 6, 8 и 19–21 остаются на своих местах, так что их разборы годятся и для 2027 года.

Шаблоны на Python

Перебор: все слова из букв

itertools.product выдаёт все наборы букв нужной длины. Это задача со схемы выше: слова из четырёх букв К, О, Д без двух О подряд.

from itertools import product

count = 0
for w in product('КОД', repeat=4):
    word = ''.join(w)
    if 'ОО' not in word:
        count += 1
print(count)
60

product выдаёт кортежи вроде ('К', 'О', 'Д', 'К'), а ''.join(w) склеивает их в слово. Если буквы в слове повторяться не могут, вместо product берут permutations.

Системы счисления

print(bin(13)[2:])
print(int('1101', 2), int('1A', 16))

def digits(n, base):
    result = []
    while n > 0:
        result.append(n % base)
        n //= base
    return result[::-1]

print(digits(100, 3))
print(digits(255, 16))
1101
13 26
[1, 0, 2, 0, 1]
[15, 15]
  • bin() возвращает строку с приставкой 0b, срез [2:] её убирает.
  • int(s, base) переводит запись в число из любой системы счисления от 2 до 36.
  • Обратно Python переводит только в двоичную, восьмеричную и шестнадцатеричную системы (bin, oct, hex), поэтому для остальных пишут свою функцию: остаток от деления на основание — очередная цифра справа. digits возвращает цифры списком, так что основание может быть и больше 10, а число нулей в записи — это digits(n, base).count(0).

Рекурсия с памятью

В задании 16 функцию задают через саму себя. Например, F(n) = 1 при n ≤ 2 и F(n) = F(n − 1) + F(n − 2) при n > 2. Чему равно F(100)?

from functools import lru_cache

@lru_cache(None)
def f(n):
    if n <= 2:
        return 1
    return f(n - 1) + f(n - 2)

print(f(100))
354224848179261915075

Без @lru_cache(None) программа не закончится: каждое значение считается заново, и вызовов становится больше, чем компьютер успеет выполнить. С ним каждое F(n) считается один раз. Если цепочка вызовов уходит глубже 1000, Python останавливает её с RecursionError — тогда поднимают предел через sys.setrecursionlimit или считают значения по порядку циклом.

Файл с данными

Задания 17, 24, 26 и 27 дают файл с данными, и программа читает его через open(). На этой странице файла задания нет, поэтому первые две строки примера создают его сами:

with open('17.txt', 'w') as f:
    f.write('5\n-3\n10\n')

with open('17.txt') as f:
    nums = [int(x) for x in f]
print(len(nums), sum(nums), max(nums))
3 12 10

В задании файл уже дан, и нужна только вторая часть. for x in f идёт по строкам файла, а int(x) превращает строку в число и сам отбрасывает перевод строки.

Частые ошибки

print(list(range(1, 5)))
print(6 / 2, 7 // 2, 7 % 2)
print('10' < '9', 10 < 9)
print(bin(5), bin(5)[2:])
[1, 2, 3, 4]
3.0 3 1
True False
0b101 101
  • range(1, 5) не включает 5. Если в условии «от 1 до N включительно», пиши range(1, N + 1).
  • / всегда даёт дробное число, даже 6 / 2 — это 3.0. Целая часть — //, остаток — %.
  • Строки сравниваются по символам: '10' < '9', потому что '1' меньше '9'. Числа из файла сначала переводи в int.
  • bin() начинается с 0b: без среза [2:] и длина записи, и число нулей в ней выйдут неверными.

Где тренироваться

Ставить Python для тренировки не обязательно: песочница Python запускает код в браузере — и на школьном компьютере, где ничего нельзя установить, и на телефоне. Файл задания перетащи на страницу песочницы: он появится в проекте, и open('17.txt') его прочитает. Песочница хранит текстовые файлы до 200 КБ.

Разборы отдельных заданий с запускаемым кодом: задание 2 о таблице истинности, задание 5 о двоичной записи, задание 6 о черепахе, задание 8 о переборе слов, задание 12 об исполнителе Редактор, задание 13 об IP-адресах и масках, задание 14 о системах счисления, задание 15 об отрезках и делимости, задание 16 о рекурсивных функциях, задание 17 о парах чисел из файла и задания 19–21 о теории игр.

Источники