為什麼這篇身份證產生器鄉民發文收入到精華區:因為在身份證產生器這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者zha0 (這個帳號是掛網用)站內Python標題[閒聊] 身份證產生器時間Fri Dec 16...
身份證產生器 在 寶妮老師Bonnie Instagram 的最佳貼文
2020-11-02 16:38:10
為什麼亂打沒辦法成為一組身分證字號⠀ 你知道身份證字號編碼的小秘密嗎⠀ #快上YOUTUBE⠀ 和寶妮一起成為人體身分證字號產生器吧(誤)⠀ ⠀ *貼心叮嚀: 好孩子不要學!不要亂用別人的身分證字號 😛...
這二天在版上一直問一些基本的問題, 其實是要寫身份證產生器(不過是某個程式的一部份)
以下分享寫的程式碼, 如果有人有興趣, 不知可不可以再幫我把他簡化 , 感謝 .
以前寫 C 有寫過不用查表的方式 , 用 if else if 一直在那裡判斷 A~G, H, I~... 就減多少加多少之類的 :p
不過覺得這樣也要好幾行, 還是用查表好了, 二個 array 去代入 .
import os, sys
from random import randint, sample, choice
def chk():
id=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
num=[10, 11, 12, 13, 14, 15, 16, 17, 34, 18, 19, 20, 21, 22, 35, 23, 24, 25, 26, 27, 28, 29, 32, 30, 31, 33]
a2n=dict(zip(id, num))
alpha = choice(id)
r = [choice((1, 2))]+sample(range(0, 10), 7)
k = [ v*(8-i) for i,v in enumerate(r) ]
chk = (a2n[alpha]/10)+(a2n[alpha]%10*9) + sum(k)
chk = (10 - (chk % 10)) % 10
return alpha+''.join(map(str, r))+str(chk)
if __name__ == '__main__':
for i in range(1,10):
print chk()
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.121.210