Skip to main content
 首页 » 编程设计

python之在 Python 中制作字符串系列

2025年05月04日12soundcode

我在 Python 中遇到了一个问题,我就是无法理解,即使它相当简单(我认为)。

我正在尝试制作“字符串系列”。我真的不知道它叫什么,但它是这样的:

我想要一个使字符串连续运行的函数,这样每次函数被调用时它都会“计数”一次。

我有一个包含“a-z0-9._-”(a 到 z、0 到 9、点、下划线、破折号)的列表。我应该从我的方法接收到的第一个字符串是 aaaa,下次调用它时,它应该返回 aaab>,下次 aaac 等等,直到我到达 ----

此外,脚本的字符串长度是固定的,但应该很容易更改。

(在您查看我的代码之前,如果我的代码不符合约定,我想道歉;几天前我开始编写 Python 代码,所以我还是一个菜鸟)。

我得到的:

正在生成我的可用字符列表

chars = [] 
for i in range(26): 
    chars.append(str(chr(i + 97))) 
 
for i in range(10): 
    chars.append(str(i)) 
 
chars.append('.') 
chars.append('_') 
chars.append('-') 

获取序列中的下一个字符串

iterationCount = 0 
nameLen = 3 
charCounter = 1 
def getString(): 
    global charCounter, iterationCount 
    name = '' 
    for i in range(nameLen): 
        name += chars[((charCounter + (iterationCount % (nameLen - i) )) % len(chars))] 
    charCounter += 1 
    iterationCount += 1 
    return name 

需要修复的是 getString() 函数,特别是 name 的构建方式。

我觉得在索引中使用正确的“modulu hack”是可能的,但我不能让它按预期工作!

请您参考如下方法:

使用生成器和 itertools.product 可以很容易地完成您尝试做的事情:

import itertools 
 
def getString(length=4, characters='abcdefghijklmnopqrstuvwxyz0123456789._-'): 
    for s in itertools.product(characters, repeat=length): 
        yield ''.join(s) 
 
for s in getString(): 
    print(s) 
 
 
aaaa 
aaab 
aaac 
aaad 
aaae 
aaaf 
...