Форум » Обработка символьных строк » 4525 » Ответить

4525

Ar3turrr: Не могу понять, что делаю не так, но ответ получается 354. [pre2]s = open('24-181.txt').readline() count = maxcount = dots = 0 for i in range(len(s)): if s[ i] == '.': dots += 1 if dots < 3: count += 1 if dots == 3: maxcount = max(count, maxcount) count = 1 dots = 1 print(maxcount)[/pre2]

Ответов - 10

Aleksey6819: Для проверки своего алгоритма, надо взять свою строку (или несколько), которая позволит понять где может быть ошибка. Например: s='AA.AAA.AAAA.A' s='AA.AAA.AAAA.AAAAAA.A' s='AA.AAA.AAAA' Посчитайте вручную и с помощью своей программы и Вы увидите разницу.

Ar3turrr: Попробовал код на разных строках - всё выводит правильно. Для s='AA.AAA.AAAA.A' - 11(AA.AAA.AAAA), s='AA.AAA.AAAA.AAAAAA.A' - 11(AA.AAA.AAAA), s='AA.AAA.AAAA' - 11(AA.AAA.AAAA). Ответ всё равно получается не верным. [pre2]s = open('24-181.txt').readline() count = maxcount = dots = 0 for i in range(len(s)): if s[ i] == '.': dots += 1 if dots < 3: count += 1 if dots == 3: maxcount = max(count, maxcount) count = 1 dots = 1 maxcount = max(count, maxcount) print(maxcount)[/pre2]

Aleksey6819: Для третьей строки Вы нашли ошибку и исправили (в этой задаче она не влияет на ответ, но в других может). Для второй строки Вы не смогли найти максимальное количество идущих подряд символов, среди которых не более двух точек. Я просил посчитать вручную. У меня получилось 15.


Ar3turrr: Aleksey6819 пишет: Я просил посчитать вручную. У меня получилось 15. Я посчитал, у меня вышло 11. В строке 'AA.AAA.AAAA.AAAAAA.A' часть AA.AAA.AAAA составит 11 символов, дальше идёт 3 точка(до этого было 2), поэтому с третей точки отсчёт пойдёт заново. В условии сказано найти длину символов, среди которых будет 2 или меньше точек.

Aleksey6819: AA.AAA.AAAA.AAAAAA.A Я выделил жирным и красным цветом 15 символов, которые удовлетворяют заданию.

Ar3turrr: Почему вы не считаете точку, которая стоит после АА? Отсчёт начинается с левой части AA.AAA.AAAA.AAAAAA.A. В условиях сказано, что нужно определить количество идущих подряд символов, среди которых не более двух точек. То есть не имеет значение должна быть точка перед промежутком, ведь нужно найти строки символов, в которых 2 точки.

Aleksey6819: Несколько вопросов: 1. Символы, которые я выделил, идут подряд? 2. Количество точек в выделенных символах не больше 2?

Ar3turrr: 1. Подряд 2. Не больше двух Но разве мой пример не подходит под такие же условия?

Aleksey6819: AA.AAA.AAAA.AAAAAA.A AA.AAA.AAAA.AAAAAA.A AA.AAA.AAAA.AAAAAA.A Так понятно? Вам надо найти максимальное количество подряд идущих символов, среди которых будет не более 2 точек.

Ar3turrr: Я понял, что требуется. Спасибо за разъяснение!



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