Само задание:
(№ 3784) Текстовый файл 24-s1.txt состоит не более чем из 106 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую наибольшее количество пар соседних букв, которые стоят в таком же порядке и в алфавите (например, AB, BC, CD и т.д.; в цепочке ABC две таких пары). Если таких строк несколько, надо взять ту, которая в файле встретилась позже. Определите, какая буква встречается в этой строке реже всего (но присутствует!). Если таких букв несколько, надо взять ту, которая стоит раньше в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле.
Пример. Исходный файл:
ZCQABA
ZALMAC
CRACUT
В этом примере в первой и второй строках по одной подходящей паре (AB и LM), в третьей таких пар нет. Берём вторую строку, т.к. она позже встречается в файле. В этой строке реже других встречаются буквы Z и C (по одному разу), выбираем букву С, т. к. она раньше стоит в алфавите. В ответе для этого примера надо записать C4, так как во всех строках файла буква C встречается 4 раза.
Моё решение:
f = open('24-s1.txt','r')
chars_from_text = {}
need_char = ''
current_min_amount = 60000
alphabet=[]
kmax = 0
for е in range(65,91):
alphabet.append(chr(е))
b=''
for line in f:
k = 0
for char in range(0,len(line) - 1):
for i in range(0,24):
if alphabet[i] == line[char] and alphabet[i + 1] == line[char + 1]:
k += 1
if k >= kmax:
b = line
kmax = max(k , kmax)
v = ''
for char in b:
if char in chars_from_text:
chars_from_text[char] += 1
else:
chars_from_text[char] = 1
for p in range(0 , 25) :
v = alphabet[p]
if current_min_amount > chars_from_text[v]:
need_char = v
current_min_amount = chars_from_text[v]
summa = 0
f = open('24-s1.txt','r')
for line in f:
for q in line:
if q == need_char:
summa += 1
print('Буква',need_char,'Кол-во букв в файле',summa)
Заранее благодарю за оказанную помощь!