2017-08-01 22 views
1

私は、Pythonでアプリケーションを構築していて、自分のアプリケーションに登録する人々のシリアル番号を生成したいのですが、実際にどうやってそれを行うのか分かりません。特別なシリアル番号ジェネレータ

シリアル番号は、1JA002の形式であることが想定されています。最初の数字 '1'はユーザーの機能または部門を決定し、最初の2文字は最初と最後の名前から順に抽出されます最後の3桁は登録した時間に基づいて作成されます。たとえば、登録する最初の人物の番号は「001」で、その数字はちょうど3でなければなりません。

また、最後の3桁も文字の配置に依存するため、2人の人が姓と名義の文字「AA」を持ち、同時に登録する場合は、最初の2文字目名前は個体を分離するためにも使用され、対応する数字も与えられます。

#私のコードはどこですか?

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) 

...で欲しいものに近い得ることができます - - チェック桁が追加されます。

関連する問題