特殊序列号发生器

时间:2017-08-01 18:22:18

标签: python-3.x

拜托,我正在使用python构建一个应用程序,并希望为在我的应用程序上注册的人生成序列号,但我真的不知道如何去做。

序列号应该是格式为1JA002,其中第一个数字'1'决定用户的功能或部门,前两个字母是从该顺序中的第一个和最后一个名称中提取的,但是最后三位数是根据您注册的时间开发的,例如,第一个注册的人将使用数字'001'作为他的号码,这些数字必须只是三位数。

最后三位数也取决于字母的排列,所以如果两个人的名字和姓氏都有'AA'字母并且他们要同时注册,那么第一个名字的第二个字母用于分隔个人,并给他们相应的数字。

#下面是我的代码,我被卡住了!

firstName='sam'   # example names 
LastName='john'
f=firstName
L=lastName
po=f[0]
ko=L[0]
firstUser='001'
def numbergen():#function to generate serial code
    count=0
    SerialNumber=''
    while True:
        if count==0:#count indicates the number time the user registered
            if (po<ko) or (po>ko) or (po==ko):
                SerialNumber+='1'+'po'+'ko'+firstUser
        count+=1
        if count==1:#serial number generation for very next user
            initialUser='002' # the very second user

1 个答案:

答案 0 :(得分:0)

尝试https://github.com/vernondcole/idstring了解相关提示。

通常,在序列号中添加含义(例如您的部门提案加上第一个和最后一个首字母)是一个坏主意。当Juile Jones(1JJ100)与Jeffry Adams(2JA100)结婚时会发生什么?她必须得到一个新号码(1JA100)还是她保留旧号码?如果忽略名称更改,为什么还要首先编写首字母的编码?如果她也改变了部门怎么办? 2JA101?

您还必须在生成器程序之外保持序列号的状态。如果使用倒数第一个首字母进行编码,则需要一个数据库来跟踪所有26个平方(部门数)的可能组合。

说了这么多,你可以接近你想要的......

import idstring
department = "1"
initials = department + firstname[0] + lastname[0]
try:
  seed_value = function_to_fetch_a_seed(initials)
except someError:
  seed_value = "100"
id = idstring.IDstring(None, seed_value, initials)
print('This id =', id)
id += 1
function_to_store_your_seed(id, initials)

哪个符合您的使用案例,除了首字母将跟随而不是引导序列部分 - 并且将添加校验位。