Почему не хочет сокращать строку?
У меня есть строка, которую я хотел сократить, но также после неё поставить цифру, которая укажет сколько раз повторялись буквы подряд, но постоянно выводится [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 шт):
Обратите внимание, что в своем коде вы установили значение c = 0, но меняете это значение только при условии, что c != 0.
Так и выходит, что в блок if ваша программа никогда не зайдет, c всегда равна 0, а на вывод будет идти [None, 0, 0, ...] с количеством нулей, равным длине вашей строки.
Вы, похоже, сами себя запутали. На самом деле, пока буква одна и та же, надо тоько увеличивать счетчик, а все остальное делать при ее смене
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]