Форум сайта python.su
0
Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.
Кодирование осуществляется следующим образом:
s = ‘aaaabbсaa’ преобразуется в ‘a4b2с1a2’, то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.
Напишите программу, которая считывает строку, кодирует её предложенным алгоритмом и выводит закодированную последовательность на стандартный вывод. Кодирование должно учитывать регистр символов.
с решением помогли, но я не понимаю почему х = 1, мы же сравниваем первый и второй символ, а первый символ в строке 0. В чем логика?????
Решение:
message = str(input())
cnt = 1
x = 1
j = message (x:x+1)
for i in message:
if i in j:
cnt += 1
else:
print(i, end='')
print(cnt, end='')
cnt = 1
x += 1
j = message (x:x+1)
# скобки квадратные
Отредактировано Mr.Gned (Май 2, 2022 15:02:18)
Офлайн
857
Mr.GnedДа ты просто не понял алгоритм, который реализован в этом коде. Чтобы понимать алгоритмы, реализованные в кодах, надо уметь рисовать блок-схемы. Также надо уметь пользоваться дебаггером. Чтобы уметь рисовать блок-схемы, надо их постоянно рисовать для своих кодов и желательно это делать до написания кодов, а не после, хотя поначалу ты это делаешь для кодов, которые уже написаны. Когда научишься рисовать блок-схемы на бумаге, со временем ты начнёшь их рисовать в воображении. И вот из блок-схемы, нарисованной в воображении, ты как раз и увидишь, почему x = 1 и почему там нуля нет.
но я не понимаю почему х = 1, мы же сравниваем первый и второй символ
Отредактировано py.user.next (Май 2, 2022 22:26:23)
Офлайн
0
Спасибо за совет, согласен с названиями полная непонятка. Сейчас попробую блок- схему нарисовать
Офлайн