Форум » Обработка символьных строк » Задача 24 номер 189 » Ответить

Задача 24 номер 189

tsv: Добрый день! В задаче 189 ответ 90. (№ 4752) Текстовый файл 24-181.txt содержит строку из заглавных латинских букв и точек, всего не более 106 символов. Определите максимальное количество идущих подряд символов, среди которых нет точек, а количество гласных (букв A, E, I, O, U, Y) не превышает 7. У меня не получается такой ответ. Пожалуйста, посмотрите, что не так в программе. [pre] f=open('24-181.txt') s=f.readline() f.close() #s='AEYUIEAEIOUY.QAWEZUA.AAAAAAAAAAAAAA.EE EEEEEEEEE' p=s.split('.') #print(p) #print(len(p)) m=0 for z in range(len(p)): k=0 for b in 'AEIOUY': t=p[z].count(b) if t!=-1: k+=t if k<=7: if len(p[z])>m: m=len(p[z]) print(m) [/pre]

Ответов - 7

zachto: Вы просматриваете весь отрезок, не содержащий точек. Максимальное количество (ответ), в свою очередь, может быть в отрезке, в котором гласных букв больше 7.

dim18: Здравствуйте. Почему "максимальное количество (ответ), в свою очередь, может быть в отрезке, в котором гласных букв больше 7."? По условию задачи рассматриваются последовательности, не содержащие точек и содержащие не более семи гласных.

Поляков: dim18 пишет: Почему "максимальное количество (ответ), в свою очередь, может быть в отрезке, в котором гласных букв больше 7."? Потому что если обрезать цепочку с 10-ю гласными буквами может получиться цепочка с 7-ю гласными, которая уже соответствует условию.


dim18: Спасибо! Все-равно не могу понять. Посмотрите, пож., алгоритм. В чем ошибка? [pre2] a = open('24-181.txt') b = a.read().split('.') def f(n): k = 0 for i in n: if i in 'AEIOUY': k += 1 if k > 7: return False return True print(max([len(i) for i in b if f(i)])) [/pre2]

Поляков: dim18 пишет: if k > 7: return False В этом и ошибка. Почему вы сразу отбрасываете строку, где более 7 гласных, не попытавшись ее предварительно подрезать?

dim18: Теперь и я понял) Спасибо!

tsv: Спасибо за ответ, все поняла.



полная версия страницы