Как автоматически сгенерировать строку в последовательности из «0-9 AZ» - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь автоматически сгенерировать строку из 0-9 и Az.

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

И в последовательности

1 Ответ

0 голосов
/ 07 ноября 2019

просто сделайте рекурсивный вызов функции.

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))

Рекурсору может потребоваться много времени для больших чисел, поэтому вы также можете увеличить свою собственную систему счисления.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...