Найти - Пользователи
Полная версия: Python цикл for
Начало » Python для новичков » Python цикл for
1 2
pavel13079
Узнав, что ДНК не является случайной строкой, только что поступившие в Институт биоинформатики студенты группы информатиков предложили использовать алгоритм сжатия, который сжимает повторяющиеся символы в строке.

Кодирование осуществляется следующим образом:
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

Если мы вводим строку “GGWWPP”, то выводит G2W2. Подскажите почему последний символ выводит(P.S думаю потому что после него идет пустая строка)
doza_and
pavel13079
Если мы вводим строку “GGWWPP”, то выводит G2W2.
Ничего оно не выводит.

Код надо оборачивать в теги иначе съедаются отступы и код становится невалидным.
pavel13079
doza_and
КАКИЕ ТЕГИ???
Romissevd
 [code python] тут код [/code]
pavel13079
Romissevd
Спасибо)
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))
pavel13079
Romissevd
Когда ты доходишь до последней буквы ты не заходишь в блок else, вот так будет работать
не работает (
Ввод
GGWWZ
Вывод
G2
W2
W1

можно в последнем else тспользовать i+1 но не знаю на скок это правильно
Romissevd
 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))
pavel13079
Romissevd
а можно все таки поподробнее узнать Почему у нас первый else не срабатывает?)
Romissevd
потому как последний элемент ты никогда не проверяешь и на вывод не подаешь. Твой range сгенирит i от 0 до предпоследнего символа. Ты сравнишь предпоследний символ с последним если они равны прибавишь 1 и выйдешь из цикла, если нет вызовешь print переопределишь index и выйдешь из цикла.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB