Почему не хочет сокращать строку?

У меня есть строка, которую я хотел сократить, но также после неё поставить цифру, которая укажет сколько раз повторялись буквы подряд, но постоянно выводится [None, 0, 0, 0]. Что не так с этим скриптом???

import os; os.system('cls')

s = str(input('Введите строку\n> '))
r = [None]
c = 0

for i in s:
    if i != r[-1] and c != 0:
        r.append(i)
        с += 1
    elif i != r[-1] and c == 0:
        r.append(c)

print(r)

Пока оно должно выводить все элементы массива r, которую если сложить получится сокращенная строка.


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

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

Обратите внимание, что в своем коде вы установили значение c = 0, но меняете это значение только при условии, что c != 0.

Так и выходит, что в блок if ваша программа никогда не зайдет, c всегда равна 0, а на вывод будет идти [None, 0, 0, ...] с количеством нулей, равным длине вашей строки.

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

Вы, похоже, сами себя запутали. На самом деле, пока буква одна и та же, надо тоько увеличивать счетчик, а все остальное делать при ее смене

s = str(input('Введите строку\n> '))
# добавляем первую букву
r = [s[0]]
c = 1

for i in s[1:]:
    # буква сменилась, записываем счетчик предыдущей и ее саму
    if i != r[-1] :
        r.extend([c, i])
        c = 1
    # та же буква, увеличиваем счетчик
    else :
        c += 1
# надо добавить счетчик последней буквы
r.append(c)
print(r) 

ababbabbb
['a', 1, 'b', 1, 'a', 1, 'b', 2, 'a', 1, 'b', 3]
→ Ссылка