运行长度解压缩python

运行长度解压缩python,python,python-3.x,run-length-encoding,Python,Python 3.x,Run Length Encoding,我正在尝试制作一个不使用1的游程长度解码器。例如,可以传递的字符串类似于“A2C3GTA”。我做了我认为可行的事情,但我很难找到哪里出了问题。我是python的初学者,所以我很抱歉问这个简单的问题。谢谢大家! def decode(compressed): decoded= "" count = 0 for x in compressed : if x.isdigit(): count

我正在尝试制作一个不使用1的游程长度解码器。例如,可以传递的字符串类似于“A2C3GTA”。我做了我认为可行的事情,但我很难找到哪里出了问题。我是python的初学者,所以我很抱歉问这个简单的问题。谢谢大家!

def decode(compressed):
    decoded= ""
    count = 0

    for x in compressed :
        if x.isdigit():
            
            count += int(x)
            y = compressed
            decoded += y[int(x)+1] * count
            count = 0
        else :
            decoded += x
        
           
    print (decoded)  

找到数字-字母对时,展开该对后将无法跳过该字母。这是因为您对循环使用了
,这是一种比您的逻辑所需要的限制性更强的结构。相反,请尝试:

idx = 0
while idx < len(compressed):
    char = compressed[idx]
    if char.isdigit():
        # replicate next character
        idx += 2
    else:
        decoded += char
        idx += 1
这里,
x
是游程长度,而不是字符的位置。如果输入是
A7B
,由于索引超出范围,此格式错误的表达式将出现故障

在我上面给出的代码中,只需继续使用
idx
作为索引

我相信你能从这里完成。

请提供预期的结果。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。我们还希望您能够在错误点之前跟踪可疑值。你对他们是如何获得这些价值观感到困惑吗?
        decoded += y[int(x)+1] * count