python - 运行长度编码项目未输出

标签 python string output

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/

相关文章:

python - 打印时无法添加字符串

python - 使用 Selenium 保存在浏览器中打开的 pdf

python计算字符串列表中的单词数

c - 在 C 中将字符串直接传递给输入参数为 char 指针的函数有哪些潜在问题?

linux - 使用 Linux 排序来获得标准输出结果

python - 使用 Flask 和 Peewee 进行分页

python - 使用 python 正则表达式编译模糊正则表达式

c++ - 字符串数据的哈希函数

java - 在另一个 JFrame 上显示主类的数据

Android - 连接测试结果目录