使用Python實(shí)現(xiàn)根據(jù)指定的出生日期自動(dòng)生成測試身份證號(hào)碼的方法

1实撒、身份證號(hào)碼結(jié)構(gòu)簡介
1.號(hào)碼的結(jié)構(gòu)

公民身份號(hào)碼是特征組合碼怪瓶,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成畏浆。排列順序從左至右依次為:六位數(shù)字地址碼竟终,八位數(shù)字出生日期碼僵井,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼维费。

2.地址碼

表示編碼對(duì)象常住戶口所在縣(縣級(jí)市蝶缀、旗扩借、區(qū))的行政區(qū)劃代碼,按GB/T2260的規(guī)定執(zhí)行贱鄙。

3.出生日期碼

表示編碼對(duì)象出生的年劝贸、月、日逗宁,按GB/T7408的規(guī)定執(zhí)行映九,年、月瞎颗、日代碼之間不用分隔符件甥。

4.順序碼

表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年哼拔、同月引有、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性倦逐,偶數(shù)分配給女性譬正。

5.校驗(yàn)碼

根據(jù)前面十七位數(shù)字碼,按照ISO 7064:1983.MOD 11-2校驗(yàn)碼計(jì)算出來的檢驗(yàn)碼檬姥。

2曾我、身份證號(hào)碼尾號(hào)算法示例

比如身份證號(hào)碼前17位為:11011119900203123

第一步、將前面的身份證號(hào)碼17位數(shù)分別乘以不同的系數(shù)健民。從第一位到第十七位的系數(shù)分別為:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 您单,并且將這17位數(shù)字和系數(shù)相乘的結(jié)果相加

例如:1x7+1x9+0x10+1x5+1x8+1x4+1x2+9x1+9x6+0x3+0x7+2x9+0x10+3x5+1x8+2x4+3x2 = 153

第二步、用加出來和除以11荞雏,看余數(shù)是多少;

例如:153 / 11 = 13余10平酿,余數(shù)為10

第三步凤优、余數(shù)只可能有0 1 2 3 4 5 6 7 8 9 10這11個(gè)數(shù)字。其分別對(duì)應(yīng)的最后一位身份證的號(hào)碼為1 0 X 9 8 7 6 5 4 3 2蜈彼;

例如:上一步中的余數(shù)為10筑辨,我們的校驗(yàn)位就是:2

所以,身份證號(hào)碼為:11011119900203123

用我之前寫的校驗(yàn)工具校驗(yàn)一下幸逆,確認(rèn)無誤:

1584436953604.png
3棍辕、全代碼

我們要實(shí)現(xiàn)的功能:輸入出生年月日,自動(dòng)隨機(jī)生成一個(gè)身份證號(hào)碼还绘;

# -*- coding: utf-8 -*-
# @Time    : 2020/3/17 17:29
# @Author  : felix
# @File    : idNumber.py
# @Software: PyCharm

import random

#預(yù)設(shè)地區(qū):
codelist = ["110101","110102","110105","110106","110107","420117","420200","420202","420203","420204","420205","420222"]    #隨便設(shè)置了幾個(gè)地區(qū)楚昭,基本都是湖北和北京的;
weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] #權(quán)重項(xiàng)
checkcode ={'0':'1','1':'0','2':'X','3':'9','4':'8','5':'7','6':'6','7':'5','8':'5','9':'3','10':'2'} #校驗(yàn)碼映射

def newIdNum(birthyear,birthmonth,birthday):
    #身份證前6位
    try:
        id = codelist[random.randint(0,len(codelist))] #地區(qū)項(xiàng)
    except:
        id = "110101"

    #7-10位拍顷,出生年份
    try:
        birthdayStr = str(birthyear).zfill(4)+str(birthmonth).zfill(2)+str(birthday).zfill(2)
        id = id + birthdayStr
    except:
        id = id + "19900101"

    #最后4位的隨機(jī)前3位
    sex = ""
    try:
        sign = random.randint(1,999)
        if sign%2 == 0:
            sex = "女"
        else:
            sex = "男"
        id = id + str(sign).zfill(3) #順序號(hào)簡單處理
    except:
        id = id + "999"
    #判斷性別

    sum_1 = 0
    for a in range(17):
        sum_1 = sum_1+int(id[a])*weight[a]
    index_id = sum_1%11
    result_id = id + str(checkcode[str(index_id)])  #最終號(hào)碼
    return (result_id,sex)

if __name__ == '__main__':
    birthyear = input("請(qǐng)輸入出生年(例如:1990): ")
    birthmonth = input("請(qǐng)輸入出生月(例如:10): ")
    birthday = input("請(qǐng)輸入出生日(例如:2): ")
    (id,sex) = newIdNum(birthyear,birthmonth,birthday)
    print("身份證號(hào)碼為:%s抚太,性別:%s" %(id,sex))

測試輸出:

請(qǐng)輸入出生年(例如:1990): 1989
請(qǐng)輸入出生月(例如:10): 12
請(qǐng)輸入出生日(例如:2): 13
身份證號(hào)碼為:320200198912135760,性別:女

Process finished with exit code 0
請(qǐng)輸入出生年(例如:1990): 2010
請(qǐng)輸入出生月(例如:10): 12
請(qǐng)輸入出生日(例如:2): 3
身份證號(hào)碼為:420117201012031026,性別:女

Process finished with exit code 0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尿贫,一起剝皮案震驚了整個(gè)濱河市电媳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌庆亡,老刑警劉巖匾乓,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異又谋,居然都是意外死亡拼缝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門搂根,熙熙樓的掌柜王于貴愁眉苦臉地迎上來珍促,“玉大人,你說我怎么就攤上這事剩愧≈硇穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵仁卷,是天一觀的道長穴翩。 經(jīng)常有香客問我,道長锦积,這世上最難降的妖魔是什么芒帕? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮丰介,結(jié)果婚禮上背蟆,老公的妹妹穿的比我還像新娘。我一直安慰自己哮幢,他們只是感情好带膀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著橙垢,像睡著了一般垛叨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柜某,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天嗽元,我揣著相機(jī)與錄音,去河邊找鬼喂击。 笑死剂癌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翰绊。 我是一名探鬼主播珍手,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了琳要?” 一聲冷哼從身側(cè)響起寡具,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稚补,沒想到半個(gè)月后童叠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡课幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年厦坛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乍惊。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杜秸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出润绎,到底是詐尸還是另有隱情撬碟,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布莉撇,位于F島的核電站呢蛤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棍郎。R本人自食惡果不足惜其障,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涂佃。 院中可真熱鬧励翼,春花似錦、人聲如沸辜荠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侨拦。三九已至,卻和暖如春辐宾,著一層夾襖步出監(jiān)牢的瞬間狱从,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工叠纹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留季研,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓誉察,卻偏偏與公主長得像与涡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 為什么有的人身份證最后一位的號(hào)碼是0驼卖、1或2氨肌、3、4酌畜、5怎囚、6、7桥胞、8恳守、9或X,而有的人是X這是怎么回事的呢贩虾,又有多...
    吳富良閱讀 7,500評(píng)論 0 1
  • 開發(fā)過程中多多少少都會(huì)碰到身份證號(hào)碼催烘,今天在做項(xiàng)目的時(shí)候,碰到了對(duì)對(duì)15位缎罢、18位身份證號(hào)碼進(jìn)行校驗(yàn)伊群,借此機(jī)會(huì)在網(wǎng)...
    追夢小樂閱讀 2,411評(píng)論 1 60
  • 身份證號(hào)碼編碼規(guī)則 身份證號(hào)隨著個(gè)人的落戶后會(huì)自動(dòng)生成,早期的身份證號(hào)碼是15位屁使,也叫社會(huì)保障號(hào)在岂,1999年正式更...
    MarcoHorse閱讀 2,649評(píng)論 0 1
  • 前言 根據(jù)最新修訂的《中華人民共和國居民身份證法》第二十三條規(guī)定,依照《中華人民共和國居民身份證條例》領(lǐng)取的居民身...
    godson_ds閱讀 83,585評(píng)論 32 42
  • 晚上摘錄《原則》原文,時(shí)不時(shí)就要輸錯(cuò)一個(gè)字酬蹋,非常惱火輸入法太不智能了及老,怎么就不能理解我的意思,然后準(zhǔn)確無誤地輸入呢...
    青蛙楊閱讀 337評(píng)論 0 0