ЕГЭ по информатике - на 101 балл!

Учебник PYTHON в ЕГЭ

Готовишься к ЕГЭ по информатике и понимаешь, что Python — это твой ключ к успеху, но объем языка пугает, а времени на изучение всего подряд просто нет?

Учи не весь Python, а только то, что реально нужно на ЕГЭ!
Научись решать простые задачи кратко, сила Python — в его лаконичности!

Задачи на Python для ЕГЭ. Каждая задача содержит решение-ответ.

Pavlov Легкая сложность 25.11.2025 id: 301

Напишите программу, которая находит сумму цифр натурального числа (например, п = 123456789)

Программа должна обрабатывать натуральные числа любой длины.

Решение:

Функциональный стиль

n = 123456789
print(sum(map(int, str(n)))) # 45

Возможные решения:

Генератор

n = 123456789
print(sum(int(d) for d in str(n))) # 45

Креативный

n = 123456789
print(eval('+'.join(str(n)))) # 45

Математический

n = 123456789
s=0
while n>0:
    s+=n%10
    n//=10
print(s) # 45
Pavlov Средняя сложность 19.12.2024 id: 302

Напишите программу, которая в списке натуральных чисел определит количество таких пар чисел, в которых первый элемент пары больше второго. Под парой подразумевается два числа, стоящие рядом.
Пример списка: s = [12, 1564, 54, 546, 84, 123, 456, 789, 1, 96, 12]

Программа должна корректно обрабатывать список любой длины.

Решение:

Функциональный стиль

s = [12, 1564, 54, 546, 84, 123, 456, 789, 1, 96, 12]
print(sum(1 for a, b in zip(s, s[1:]) if a > b)) # Ответ: 4

Возможные решения:

Императивный стиль

s = [12, 1564, 54, 546, 84, 123, 456, 789, 1, 96, 12]
k = 0
for a, b in zip(s, s[1:]):
    if a > b:
        k += 1
print(k) # Ответ: 4

Решение через индексы

s = [12, 1564, 54, 546, 84, 123, 456, 789, 1, 96, 12]
k = 0
    for i in range(len(s) - 1):
        if s[i] > s[i + 1]:
            k += 1
    print(k) # Ответ: 4
Pavlov Легкая сложность 25.11.2025 id: 303

Напишите программу, которая определит, сколько можно составить различных трёхбуквенных слов из букв слова “ЛОГИКА”, в которых каждая буква встречается не более одного раза.

Под словом в данной задаче подразумевается любая комбинация букв, не обязательно осмысленная.

Решение:

from itertools import permutations
print(sum(1 for _ in permutations('ЛОГИКА', 3))) # 120

Возможные решения:

Более читаемый вариант с permutations

from itertools import permutations
print(len(list(permutations('ЛОГИКА', 3)))  # 120

Аналитическое решение

На первую позицию можно поставить любую из 6 букв
На вторую позицию - любую из оставшихся 5 букв
На третью позицию - любую из оставшихся 4 букв

6 × 5 × 4 = 120

Ручной перебор с циклами (не рекомндуется)

word = 'ЛОГИКА'
count = 0
for i in range(len(word)):
    for j in range(len(word)):
        if j != i:
            for k in range(len(word)):
                if k != i and k != j:
                    count += 1
print(count)  # 120
Pavlov Легкая сложность 25.11.2025 id: 304

Напишите программу, которая находит расстояние между точками, расположенными в декартовой системе координат.
Пример точек: A(15, 24) и B(5, -10)

Решение:

С использованием функции dist() библиотеки math - предпочтительно

from math import *
A = (15, 24)
B = (5, -10)
print(dist(A, B)) # 36.40054944640259

Возможные решения:

Алгебраический способ

from math import *
# Координаты точек
x1, y1 = 15, 24 
x2, y2 = 5, -10
# Расчёт расстояния
dx = x2 - x1
dy = y2 - y1
print(sqrt(dx**2 + dy**2)) # 36.40054944640259

Алгебраический способ без использования math

# Координаты точек
x1, y1 = 15, 24
x2, y2 = 5, -10
# Расчёт расстояния
dx = x2 - x1
dy = y2 - y1
print((dx**2 + dy**2) ** 0.5) # 36.40054944640259
Pavlov Средняя сложность 25.11.2025 id: 305

Найдите элемент списка, который встречается в списка наибольшее количество раз. Гарантируется, что такой элемент один.
Пример списка: s = [1, 2, 2, 3, 4, 4, 4, 5, 1, 6]

Решение:

Ключ и lambda-функция

s = [1, 2, 2, 3, 4, 4, 4, 5, 1, 6]
print(max(set(s), key=lambda x: s.count(x)))

Возможные решения:

Короткий вариант lambda-функции

s = [1, 2, 2, 3, 4, 4, 4, 5, 1, 6]
print(max(set(s), key=s.count)) # Сравниваются не числа, а сколько раз они встречаются в списке

Counter - объект-счетчик, который подсчитывает количество каждого элемента в списке, возвращает ключ/значение - элемент/сколько раз встречается

from collections import Counter
s = [1, 2, 2, 3, 4, 4, 4, 5, 1, 6]
print(Counter(s).most_common(1)[0][0]) # .most_common - метод: (1) - сколько самых частых элементов вернуть? [0] - берём первый элемент из списка результатов? [0] - берём сам элемент из кортежа (элемент, количество)
Pavlov Легкая сложность 25.11.2025 id: 306

Напишите программу, которая проверяет, является ли число полиндромом.
Например, n = 45678987654

Решение:

Сравнениие строк

n = 45678987654
print(str(n) == str(n)[::-1])  # True

Возможные решения:

Функциональный стиль

n = 45678987654
print((lambda x: x == x[::-1])(str(n)))  # True
# lambda x: x == x[::-1] - Создает анонимную функцию. Принимает один аргумент x. Возвращает True если x равен своей перевернутой версии x[::-1]. Применяется к строке.
Pavlov Легкая сложность 25.11.2025 id: 307

Напишите программу, которая проверет, есть ли в списке два числа, которые повторяются трижды.
Программа должна работать при любой длине списка.
Пример списка: s = [1, 2, 1, 2, 1, 2, 3, 4]

Решение:

Через список

s = [1, 2, 1, 2, 1, 2, 3, 4]
p = [el for el in s if s.count(el) == 3]
print(len(p))        # 6 ШЕСТЬ элементов сторки - два числа, повторяющиеся трижды
print(len(set(p)))   # 2 ДВА числа встречаются трижды

Возможные решения:

Через множество

s = [1, 2, 1, 2, 1, 2, 3, 4]
p = {el for el in s if s.count(el) == 3}
print(len(p))  # 2 - ДВА числа встречаются трижды
Pavlov Легкая сложность 25.11.2025 id: 308

Напишите программу, которая в последовательности N чисел ищет количество чисел кратных 3 и заканчивающихся на 2.
Пример последовательности: s = [7, 14, 12, 19, 25, 33, 41, 8, 42, 16, 23, 50, 72, 5, 28, 37, 11, 44, 30, 9]

Решение:

sum с генератором и 1

s = [7, 14, 12, 19, 25, 33, 41, 8, 42, 16, 23, 50, 72, 5, 28, 37, 11, 44, 30, 9]
print(sum(1 for num in s if num % 3 == 0 and num % 10 == 2))

Возможные решения:

Обычный цикл

s = [7, 14, 12, 19, 25, 33, 41, 8, 42, 16, 23, 50, 72, 5, 28, 37, 11, 44, 30, 9]
counter = 0
for num in s:
    if num % 3 == 0 and num % 10 == 2:
        counter += 1
print(counter)

sum с булевыми значениями

s = [7, 14, 12, 19, 25, 33, 41, 8, 42, 16, 23, 50, 72, 5, 28, 37, 11, 44, 30, 9]
print(sum(num % 3 == 0 and num % 10 == 2 for num in s))

filter + len

s = [7, 14, 12, 19, 25, 33, 41, 8, 42, 16, 23, 50, 72, 5, 28, 37, 11, 44, 30, 9]
print(len(list(filter(lambda x: x % 3 == 0 and x % 10 == 2, s))))

list comprehension + len

s = [7, 14, 12, 19, 25, 33, 41, 8, 42, 16, 23, 50, 72, 5, 28, 37, 11, 44, 30, 9]
print(len([num for num in s if num % 3 == 0 and num % 10 == 2]))