2017-08-01 25 views
1

请问,我正在用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 
+3

不要用粗体问大多数问题,尤其是大字体。 –

+0

是的,我很抱歉,因为我对这个论坛很新,这是我的第一个问题,我在每一行上都有'#'符号,因为我已经在python脚本中编写了这个问题,并且不知道它会看起来如此恐怖。请不要被冒犯 –

回答

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) 

这将满足你的使用情况,除了首字母会跟随,而不是铅,串行部分 - - 将添加一个校验位。