def expand(nums):
finalword = ''
position = 0
wordlength = len(nums)
keypoint = ''
while position <= wordlength:
keypoint = nums[position] * int(nums[position + 1])
finalword = finalword + keypoint
keypoint = 0
position + 2
return finalword
由于某种原因,这个函数没有返回值。我正在尝试获取 char 之后的整数以乘以所述 char。由于每个第二个索引上都有一个字符,我将 2 添加到位置
print(expand("d3o5z2y1")) #should output: dddooooozzy
我做错了什么?
最佳答案
你从不更新position
.
position + 2
只是进行计算而不将计算值存储在任何地方。你可能想要 position = position + 2
.
此外,您与 position <= wordlength
差一个因为 nums
的最后一个索引是len(nums) - 1
.将其更改为 position < wordlength
.
有了这些改变
print(expand("d3o5z2y1"))
产生
'dddooooozzy'
但是,您提取字符和计数的方法有点笨拙。我建议使用 grouper
recipe来自 itertools
文档。
>>> s = "d3o5z2y1"
>>> list(zip(*[iter(s)]*2))
>>> [('d', '3'), ('o', '5'), ('z', '2'), ('y', '1')]
>>>
>>> ''.join(char*int(count) for char, count in zip(*[iter(s)]*2))
>>> 'dddooooozzy'
关于python - 运行长度编码项目未输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53238383/