【发布时间】:2019-10-31 10:48:35
【问题描述】:
我正在尝试生成所有可能的长度组合,从 1 到 3 的所有小写,即从“a” - “zzz”
为此,我创建了一个从 0 到 26 ** 3 的循环,并使用 str_base 函数转换为 base 26。
def str_base(number, base):
(d,m) = divmod(number,len(base))
if d > 0:
return str_base(d,base)+base[m]
return base[m]
max = (26)**3
for i in range (0,max):
value = str_base(i,string.ascii_lowercase)
print(value)
问题是有一些组合没有生成。我得到了输出:
.
x
y
z
ba
bb
bc
.
.
不生成以“a”开头的组合。
有人可以帮帮我吗?
【问题讨论】:
-
return str_base(d,base)+base[m]这行是问题所在。当在divmod()之后说d为1 且m为0 时,您正在调用str_base(1, base),它将返回base[1]或b。a正在被跳过 -
另外
max值是另一个问题。如果您想要 a-z 后跟 aa-zz 后跟 aaa-zzz,那么总数将为 (26 + 26 * 26 + 26 * 26 * 26)
标签: python string int base variations