Программа должна считывать символы и в конце выдавать их кол-во по порядку

В общем вопрос такой. На ввод должно подавать например aaabbccbba. А выводится a3b2c2b2a1. Не пойму как зациклить проверку по символам, чтобы только в конце показывал результат. Щас погибну уже.

DNA = input().lower()   # ввод и изменение регистра
DNA_a = 0               
DNA_b = 0
DNA_c = 0
for i in DNA:           # проверка всех символов по очереди
    if i == 'a':        
        DNA_a += 1
    if i != 'a':
        print('a',end='')
        print(DNA_a)
    if i == 'b':
        DNA_b += 1
        print('b',end='')
        print(DNA_b)
    if i == 'c':
        DNA_c += 1
        print('c',end='')
        print(DNA_c)

Ответы (5 шт):

Автор решения: Alexshev92

Можно сделать через itertools.groupby

from itertools import groupby
string = "aaabbccbba"
groups = groupby(string)
result = [(letter, sum(1 for _ in group)) for letter, group in groups]
print("".join("{}{}".format(letter, count) for letter, count in result))
#a3b2c2b2a1
→ Ссылка
Автор решения: AndreyM

Используйте цикл while, если хотите обойтись без создания новой строки, а результат дописывать к текущей.

    input_str = "aaabbccbba"
    counter = 1
    i = 1
    while i != len(input_str):
            if input_str[i] != input_str[i - 1]:  # Если два соседних символа разные 
                    input_str = input_str[:i] + str(counter) + input_str[i:]  # Расширяем строку вставляя значения счетчика
                    counter = 1  # Обнуляем счетчик
                    i += 2  # Увеличиваем на 2, чтобы перепрыгнуть на след символ, и через вставленное значение
            else:
                    counter += 1
                    i += 1
    print(input_str+str(counter))
→ Ссылка
Автор решения: strawdog
from itertools import groupby

s = "aaabbccbba"
res = "".join([f"{x}{len(list(y))}" for x, y in groupby(s)])
print(res)

a3b2c2b2a1

→ Ссылка
Автор решения: Артем
DNA = "aaabbccb"

out = {}
strin = ""

for i in range(len(DNA)):
    if DNA[i] not in out:
        out[DNA[i]] = 1
        if i != 0:
            strin += str(DNA[i-1]) + str(out[DNA[i-1]])
            del out[DNA[i - 1]]
    else:
        out[DNA[i]] += 1
    if i == len(DNA) - 1:
        strin += str(DNA[i]) + str(out[DNA[i]])


print(strin)

→ Ссылка
Автор решения: CrazyElf

Ещё один вариант чисто по приколу. С одной стороны это решение "в лоб", а с другой оно должно быть вполне понятное:

s = 'aaabbccbba'

s += chr(0)
ch,cnt = s[0],1
for prev,curr in zip(s, s[1:]):
    if prev == curr:
        cnt += 1
    else:
        print(f'{ch}{cnt}', end='')
        ch,cnt = curr,1
print()
→ Ссылка