最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python隨機(jī)生成身份證號(hào)碼及校驗(yàn)功能

 更新時(shí)間:2018年12月04日 15:44:08   作者:風(fēng)靜花猶落  
這篇文章主要介紹了Python隨機(jī)生成身份證號(hào)碼及校驗(yàn)功能,文中給大家提到了校驗(yàn)碼計(jì)算方法,需要的朋友可以參考下

GitHub : https://github.com/jayknoxqu/id-number-util

身份組成方式

中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)GB 11643-1999《公民身份號(hào)碼》中規(guī)定:公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。

18位數(shù)字組合的方式是:

1 1 0 1 0 2 Y Y Y Y M M D D 8 8 8 X
區(qū)域碼(6位) 出生日期碼(8位) 順序碼(2位) 性別碼(1位) 校驗(yàn)碼(1位)

區(qū)域碼(6位) 出生日期碼(8位) 順序碼(2位) 性別碼(1位) 校驗(yàn)碼(1位)

•區(qū)域碼 指的是公民常住戶口所在縣(市、鎮(zhèn)、區(qū))的行政區(qū)劃代碼,如110102是北京市-西城區(qū)。但港澳臺(tái)地區(qū)居民的身份號(hào)碼只精確到省級(jí)。
•出生日期碼 表示公民出生的公歷年(4位)、月(2位)、日(2位)。
•順序碼 表示在同一區(qū)域碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào)。
•性別碼 奇數(shù)表示男性,偶數(shù)表示女性。
•最后一位是校驗(yàn)碼,這里采用的是ISO 7064:1983,MOD 11-2校驗(yàn)碼系統(tǒng)。校驗(yàn)碼為一位數(shù),但如果最后采用校驗(yàn)碼系統(tǒng)計(jì)算的校驗(yàn)碼是“10”,礙于身份證號(hào)碼為18位的規(guī)定,則以“X”代替校驗(yàn)碼“10”。

校驗(yàn)碼計(jì)算方法

•1. 將身份證號(hào)碼從右至左標(biāo)記為a_1 , a_2 , \cdots , a_{18},a_1即為校驗(yàn)碼;
•2. 計(jì)算權(quán)重系數(shù) W_i=2^{i-1}\ \bmod \ {11}

所以:

i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

•3. 計(jì)算S = \sum_{i=2}^{18} a_i \cdot W_i
•4. a_1=(12-( S \ \bmod 11)) \bmod 11

使用Python獲取身份證校驗(yàn)碼:

def get_check_digit(id_number):
  """通過(guò)身份證號(hào)獲取校驗(yàn)碼"""
  check_sum = 0
  for i in range(0, 17):
    check_sum += ((1 << (17 - i)) % 11) * int(id_number[i])
  check_digit = (12 - (check_sum % 11)) % 11
  return check_digit if check_digit < 10 else 'X'

隨機(jī)生成身份證

由上面的組合方式我們可以得出以下代碼:

@classmethod
def generate_id(cls, sex=0):
  """
  隨機(jī)生成身份證號(hào),sex = 0表示女性,sex = 1表示男性
  """
  # 隨機(jī)生成一個(gè)區(qū)域碼(6位數(shù))
  area_info = random.randint(0, len(addr))
  id_number = str(addr[area_info][0])
  # 限定出生日期范圍(8位數(shù))
  start, end = "1960-01-01", "2000-12-30"
  days = (datetime.datetime.strptime(end, "%Y-%m-%d") - datetime.datetime.strptime(start, "%Y-%m-%d")).days + 1
  birth_days = datetime.datetime.strftime(
    datetime.datetime.strptime(start, "%Y-%m-%d") + datetime.timedelta(random.randint(0, days)), "%Y%m%d"
  )
  id_number += str(birth_days)
  # 順序碼(2位數(shù))
  id_number += str(random.randint(10, 99))
  # 性別碼(1位數(shù))
  id_number += str(random.randrange(sex, 10, step=2))
  # 校驗(yàn)碼(1位數(shù))
  return id_number + str(cls(id_number).get_check_digit())

工具類主要功能

if __name__ == '__main__':
  random_sex = random.randint(0, 1) # 隨機(jī)生成男(1)或女(0)
  print IdNumberUtil.generate_id(random_sex) # 隨機(jī)生成身份證號(hào)
  print IdNumberUtil('410326199507103197').area_id # 地址編碼:410326
  print IdNumberUtil('410326199507103197').get_area_name() # 地址:汝陽(yáng)縣
  print IdNumberUtil('410326199507103197').get_birthday() # 生日:1995-7-10
  print IdNumberUtil('410326199507103197').get_age() # 年齡:23(歲)
  print IdNumberUtil('410326199507103197').get_sex() # 性別:1(男)
  print IdNumberUtil('410326199507103197').get_check_digit() # 校驗(yàn)碼:7
  print IdNumberUtil.verify_id('410326199507103198') # 檢驗(yàn)身份證是否正確:False

[√]: 代碼地址: https://github.com/jayknoxqu/id-number-util

總結(jié)

以上所述是小編給大家介紹的Python隨機(jī)生成身份證號(hào)碼及校驗(yàn)功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Python APScheduler執(zhí)行使用方法詳解

    Python APScheduler執(zhí)行使用方法詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python APScheduler執(zhí)行使用方法的相關(guān)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • jupyter中如何打開(kāi).ipynb文件

    jupyter中如何打開(kāi).ipynb文件

    這篇文章主要介紹了jupyter中如何打開(kāi).ipynb文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python 讀取xml數(shù)據(jù),cv2裁剪圖片實(shí)例

    Python 讀取xml數(shù)據(jù),cv2裁剪圖片實(shí)例

    這篇文章主要介紹了Python 讀取xml數(shù)據(jù),cv2裁剪圖片實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • 基于Python實(shí)現(xiàn)從頭搭建一個(gè)在線聊天室框架

    基于Python實(shí)現(xiàn)從頭搭建一個(gè)在線聊天室框架

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)從頭搭建一個(gè)在線聊天室框架,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • 使用Python讀寫(xiě)及壓縮和解壓縮文件的示例

    使用Python讀寫(xiě)及壓縮和解壓縮文件的示例

    Python的os模塊中提供了基本的文件讀寫(xiě)方法,而zipfile模塊則針對(duì)文件的壓縮和解壓縮操作,這里我們就來(lái)看一下使用Python讀寫(xiě)及壓縮和解壓縮文件的示例:
    2016-07-07
  • Flask路由尾部有沒(méi)有斜杠有什么區(qū)別

    Flask路由尾部有沒(méi)有斜杠有什么區(qū)別

    這篇文章主要介紹了Flask路由尾部加不加斜杠有什么區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • Python BeautifulSoup中文亂碼問(wèn)題的2種解決方法

    Python BeautifulSoup中文亂碼問(wèn)題的2種解決方法

    這篇文章主要介紹了Python BeautifulSoup中文亂碼問(wèn)題的2種解決方法,需要的朋友可以參考下
    2014-04-04
  • Linux下編譯安裝MySQL-Python教程

    Linux下編譯安裝MySQL-Python教程

    這篇文章主要介紹了Linux下編譯安裝MySQL-Python教程,本文使用編譯方式安裝,提供下載地址和測(cè)試安裝成功方法,需要的朋友可以參考下
    2015-02-02
  • Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化

    Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化

    2020年底以來(lái),歐美,印度,中國(guó),俄羅斯等多國(guó)得制藥公司紛紛推出了針對(duì)新冠/肺炎的疫苗,這部分主要分析了2020年以來(lái)全球疫情形勢(shì),各類疫苗在全球的地理分布,疫苗在各國(guó)的接種進(jìn)度進(jìn)行可視化展示,需要的朋友可以參考下
    2021-05-05
  • Pyecharts可視化圖片渲染的方法詳解

    Pyecharts可視化圖片渲染的方法詳解

    使用 pyecharts 渲染成圖片一直是開(kāi)發(fā)者比較關(guān)心的功能,pyecharts提供了selenium、phantomjs和pyppeteer 三種方式。本文將具體介紹一下這三種方式的使用,需要的可以參考一下
    2022-02-02

最新評(píng)論

墨竹工卡县| 积石山| 锡林郭勒盟| 将乐县| 固安县| 灵山县| 兴文县| 海兴县| 兰溪市| 肥东县| 武夷山市| 宜宾市| 封开县| 富蕴县| 文成县| 崇义县| 肥西县| 石楼县| 西安市| 茂名市| 叶城县| 汝阳县| 阳高县| 库车县| 浏阳市| 包头市| 舞阳县| 垫江县| 陵川县| 麻城市| 通江县| 道孚县| 浦县| 定西市| 通化市| 红河县| 高阳县| 津南区| 搜索| 兰西县| 吉安市|