运行长度解压缩python
我正在尝试制作一个不使用1的游程长度解码器。例如,可以传递的字符串类似于“A2C3GTA”。我做了我认为可行的事情,但我很难找到哪里出了问题。我是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
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