Форум сайта python.su
Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.
Кодирование осуществляется следующим образом:
s = ‘aaaabbсaa’ преобразуется в ‘a4b2с1a2’, то есть группы одинаковых символов исходной строки заменяются на этот символ и количество его повторений в этой позиции строки.
Напишите программу, которая считывает строку, кодирует её предложенным алгоритмом и выводит закодированную последовательность на стандартный вывод. Кодирование должно учитывать регистр символов.
Вот мой код
s=input() l=len(s)-1 index=1 for i in range(0,l): if s[i]==s[i+1]: index+=1 else: print(s[i]+str(index)) index=1
Отредактировано pavel13079 (Март 1, 2020 18:22:18)
Офлайн
pavel13079Ничего оно не выводит.
Если мы вводим строку “GGWWPP”, то выводит G2W2.
Офлайн
doza_andКАКИЕ ТЕГИ???
Офлайн
[code python] тут код [/code]
Офлайн
RomissevdСпасибо)
Офлайн
Когда ты доходишь до последней буквы ты не заходишь в блок else, вот так будет работать
s=input() l=len(s)-1 index=1 for i in range(0,l): if s[i]==s[i+1]: index+=1 else: print(s[i]+str(index)) index=1 else: print(s[i]+str(index))
Отредактировано Romissevd (Март 1, 2020 18:33:51)
Офлайн
Romissevdне работает (
Когда ты доходишь до последней буквы ты не заходишь в блок else, вот так будет работать
Отредактировано pavel13079 (Март 1, 2020 19:05:56)
Офлайн
s=input() l=len(s)-1 index=1 for i in range(0,l): if s[i]==s[i+1]: index+=1 else: print(s[i]+str(index)) index=1 else: print(s[-1]+str(index))
Офлайн
Romissevdа можно все таки поподробнее узнать Почему у нас первый else не срабатывает?)
Офлайн
потому как последний элемент ты никогда не проверяешь и на вывод не подаешь. Твой range сгенирит i от 0 до предпоследнего символа. Ты сравнишь предпоследний символ с последним если они равны прибавишь 1 и выйдешь из цикла, если нет вызовешь print переопределишь index и выйдешь из цикла.
Офлайн