Подскажите, что не так с кодом. Где может быть ошибка?
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите максимальное количество идущих подряд символов, среди которых не более одной буквы A.
f = open('24 (23).txt').read()
lst = []
n = ''
for i in range(len(f)):
n += f[i]
if n.count('A') > 1:
lst.append(len(n))
n = 'A'
print(max(lst))
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
if n.count('A') > 1:
lst.append(len(n)) # <- тут учтена лишняя буква А!
Вот у вас в n получается, что уже две буквы A, а вы длину всей этой последовательности в список добавили, включая лишнюю букву A. Последнюю A не нужно учитывать, т.е. нужно добавлять в список len(n) - 1.
if n.count('A') > 1:
lst.append(len(n) - 1) # <- выкинули лишнюю А
Кроме того, не учтена последовательность символов в конце файла. А вдруг она длиннее всего? Поэтому уже после окончания цикла нужно добавить длину текущей последовательности (она всегда корректная, ведь if внутри цикла работает для этого):
...
lst.append(len(n)) # <- после окончания цикла!
print(max(lst))