Рассмотрим несколько примеров решения 24-го задания ЕГЭ по информатике с использованием Python.
Задача 1: Подсчет строк с преобладанием буквы «J»
Условие: Текстовый файл содержит строки различной длины. Определите количество строк, где буква «J» встречается чаще, чем буква «И».
Решение:
Файл открывается как итерируемый объект. Цикл for перебирает строки. Внутри цикла сравнивается количество букв «J» и «И» в строке с помощью метода count(). Если «J» встречается чаще, счетчик K увеличивается. После обработки всех строк выводится значение K.
K = 0
f = open('файл.txt', 'r')
for s in f:
if s.count('J') > s.count('И'):
K += 1
f.close()
print(K)
Ответ: 482
Задача 2: Максимальное расстояние между одинаковыми буквами
Условие: Текстовый файл содержит строки различной длины. В строках короче 20 символов определите и выведите максимальное расстояние между одинаковыми буквами.
Решение:
Переменная максимум хранит максимальное расстояние. Цикл for перебирает строки. Если длина строки меньше 20, вложенный цикл перебирает буквы. Для каждой буквы, встречающейся более одного раза, вычисляется расстояние между первым и последним вхождением с помощью s.index(i) и s.rindex(i). Функция max() обновляет значение максимум. Результат выводится на экран.
максимум = 0
f = open('24164.txt', 'r')
for s in f:
if len(s) < 20:
for i in s:
if s.count(i) > 1:
максимум = max(максимум, s.rindex(i) - s.index(i))
f.close()
print(максимум)
Ответ: 974
Задача 3: Чаще всего встречающаяся буква после буквы «X»
Условие: Текстовый файл содержит строки различной длины. Для каждой строки определите букву (или буквы), которая встречается чаще всего после буквы «X», и выведите количество её вхождений.
Решение:
Словарь словарь хранит частоту букв после «X». Цикл for перебирает строки, вложенный цикл — символы, начиная с предпоследнего. Если символ равен «X», частота следующего символа увеличивается в словаре с помощью словарь.get(s[i + 1], 0) + 1. После обработки всех строк находится максимальное значение в словаре. Создается список СП для букв с максимальной частотой. Результат (максимальное значение) выводится на экран.
словарь = {}
f = open('24164.txt', 'r')
for s in f:
for i in range(len(s) - 1):
if s[i] == 'X':
словарь[s[i + 1]] = словарь.get(s[i + 1], 0) + 1
f.close()
n = max(словарь.values())
print(n)
Ответ: 928
Задача 4: Самая длинная цепочка одинаковых букв
Условие: Текстовый файл содержит строки различной длины. Найдите строку с самой длинной цепочкой одинаковых букв (если несколько таких строк, выбирается первая). Определите букву, которая встречается в этой строке реже всего, но присутствует в ней (если несколько таких, выбирается последняя в алфавите). Выведите эту букву и количество её вхождений во всем файле.
Решение:
Переменные komax, kmax и line хранят текущую длину цепочки, максимальную длину и строку с максимальной цепочкой соответственно. Цикл for перебирает строки, внутренний цикл считает длину текущей цепочки. Если текущая длина больше максимальной, обновляются kmax и line. Создается словарь для подсчета частоты букв в line. Находится буква с минимальной частотой (если несколько — последняя в алфавите). Файл открывается заново, и подсчитывается количество вхождений найденной буквы. Результат выводится на экран.
komax = 0
kmax = 0
line = ''
f = open('24164.txt', 'r')
for s in f:
k = 1
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
k += 1
else:
komax = max(komax, k)
k = 1
komax = max(komax, k)
if komax > kmax:
kmax = komax
line = s
f.close()
словарь = {}
for i in line:
словарь[i] = словарь.get(i, 0) + 1
del словарь['\n']
min_count = min(словарь.values())
letters = []
for k, v in словарь.items():
if v == min_count:
letters.append(k)
min_letter = max(letters)
f = open('24164.txt', 'r')
content = f.read()
f.close()
print(min_letter, content.count(min_letter))
Ответ: Z 36493