Идея этого алгоритма состоит в том, чтобы удалить 2 одинаковые буквы подряд, поэтому я решил сделать это с рекурсивностью: если слово (цепочка) имеет 2 последовательных буквы, логическая переменная, которую я назвал doublee, должна быть False и, если это так, мы переделываем алгоритм с новым словом (которое является исходным, но без пар последовательных букв). Если значение doublee равно True, тогда алгоритм должен остановиться и вернуть отредактированное слово. И проблема в том, что у меня есть бесконечное l oop, когда аргумент ('baab'). Фактически, с первой попытки, «aa» удаляется, поэтому у нас теперь есть «bb», но я знаю, почему он не просто повторяет то, что мы делали раньше. Вот код:
def musique(chaine) :
L = list(chaine)
for i in range(len(chaine)-1) :
if L[i] == L[i+1] :
L[i], L[i+1] = 0, 0
chaine = ''
for i in L :
if i != 0 :
chaine += i
doublee = True
for i in range(len(chaine)-1) :
if chaine[i] == chaine[i+1] :
doublee = False
while doublee == False :
musique(chaine)
return chaine