首页 > 解决方案 > 如何从“0-9 AZ”按顺序“自动生成”字符串

问题描述

我正在尝试从 0-9 和 Az 自动生成字符串。

00001-99999 A0001-A9999 B0001-B9999 Z9999-AA999 AB001-ZZ999 AAA01-.....

并按顺序

标签: pythonpython-3.x

解决方案


只需对函数进行递归调用。

list=[]
for i in range(10):
    list.append(str(i))
for i in range(26):
    list.append(chr(ord('a')+i))
def all(pre,n):
    li=[]
    if n==1:
        for x in list:
            for p in pre:
                li.append(x+p)
        return li
    else:
        for x in list:
            for p in pre:
                li.append(x+p)
        return all(li,n-1)
print(all([''],2))

Recursor 可能会花费大量时间来处理大数字,因此您也可以让自己的数字系统递增。

class NumSys:
    def __init__(self):
        self.val=[0,0,0,0,0]
    def next(self):
        self.val[4]+=1
        for i in range(5):
            if self.val[4-i]>35:
                if i==4:
                    return None
                else:
                    self.val[4-i-1]+=1
                    self.val[4-i]-=35
    def __str__(self):
        stri=''
        for i in range(5):
            x=self.val[i]
            if x<10:
                stri+=str(x)
            else:
                stri+=chr(ord('a')+x-10)
        return stri

n=NumSys()
for i in range(100):
    print (str(n))
    n.next()

推荐阅读