Задать вопрос
@Web__Nikita03

Почему моя программа виснет?

Нужно написать программу, которая будет разжимать строку, т.е p2t4 будет pptttt. Надеюсь смысл понятен. Я написал программу, но она виснет. Подскажите, где я сделал не правильно. Я проставил комментарии, где что делается. Скажите если я, что-то понимаю не правильно.
s = 'y15G16y6Y1P11U13R14v19t20n19Z18h9x20w19s4N6A13c5Z14c9X11G14S17o5n2O8F16z4o1L17A20W3U9i10D2U5u3Q5u17x16'

ns = ''
i = 0
while i < len(s): #Перебираем строку s
    try:
        num = int(s[i])#Пытаемся преобразовать символ  в число
        c = 1
        p = str(num)
        while True:
            try:
                d = int(s[i + c]) # Проверяем является ли следующий символ числом
                c += 1
                p += str(d) # Складывем число из символов, т.е 1 + 0 = 10(будем умножать букву на 10)
            except:# Если дальше не число, а буква
                break # Заканчиваем перебор символов-чисел
                ns += s[i - 1] * int(p)#Умножаем букву на получившееся число
                i += c # Делаем такой индекс, где заканчивается число и начинается строка
    except: # Если у нас не число, а буква
        i += 1
print(ns)
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
while True:
            try:
                d = int(s[i + c]) # Проверяем является ли следующий символ числом
                c += 1
                p += str(d) # Складывем число из символов, т.е 1 + 0 = 10(будем умножать букву на 10)
            except:# Если дальше не число, а буква
                break # Заканчиваем перебор символов-чисел
                ns += s[i - 1] * int(p)#Умножаем букву на получившееся число
                i += c # Делаем такой индекс, где заканчивается число и начинается строка

Выполняется вечно для первого же элемента.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы