Python隨機生成身份證號碼

2021-03-02 猿助猿

(點擊上方公眾號,可快速關注)

之前一個朋友和我聊天說到,去百度面試高級測試工程師。

面試過程中,有被問到Python相關知識。

也提了一個Python相關的問題。

用Python實現隨機生成大於18以上的身份證號碼。

很遺憾他沒有做出來。但是至少也是一次不錯的面試經驗。

後來我就自己動手試了試。

首先百度了下身份證生成規則。

下面大家來一起看一下:

公民身份號碼是由17位數字碼和1位校驗碼組成。排列順序從左至右分別為:6位地址碼,8位出生日期碼,3位順序碼和1位校驗碼。

地址碼(身份證地址碼對照表見下面附錄)和出生日期碼很好理解,順序碼表示在同一地址碼所標識的區域範圍內,對同年同月同日出生的人編定的順序號,順序碼的奇

數分配給男性,偶數分配給女性。

身份證最後一位校驗碼算法如下:

將身份證號碼前17位數分別乘以不同的係數,從第1位到第17位的係數分別為:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

將得到的17個乘積相加。

將相加後的和除以11並得到餘數。

餘數可能為0 1 2 3 4 5 6 7 8 9 10這些個數字,其對應的身份證最後一位校驗碼為1 0 X 9 8 7 6 5 4 3 2。

身份證號碼解密|身份證尾數校驗碼算法|ID card information
身份證地址碼對照表。

以下代碼都是在Python3環境下運行,用Python2的請自行修改再運行。

運行環境:Python3,運行使用的到庫:requests,bs4,random,time

這個網站有點過分了,沒登錄不讓複製,我就直接暴力點,把它爬下來了。

下面是身份證生成代碼。
問題:
1:前6位為隨便複製了一點地區代碼加到列表裡面去隨機取。
2:年份直接從1948年開始(百度介紹說身份證是從1948年開始實施的,雖然當時好像是15位吧),結束年份為當前本地時間減去18,這樣就避免生成的身份證號碼上年齡小於18周歲
3:日期我沒有去考慮每月的日期長度(例如2月份沒有30,31號),我直接以1-31
4:後面四位我沒有按照規則去生成。
PS:有興趣的可以完善下,讓生成的更加符合規律。

輸出:

覺得本文有幫助?請分享給更多人

關注「猿助猿」成就頂級開發

技術交流QQ群:517877452

相關焦點

  • 利用Python隨機生成100道加法題
    本文我們將利用python實現一個很有意思的功能:隨機生成100道加法題。首先給出效果圖:代碼很簡單:雖然代碼看上去有很多的行,但是核心代碼就是4、5兩行。其中第4行是隨機生成100對整數,並保存為tuple類型,如圖所示:第5行是將兩個隨機整數轉換為加法的形式,如圖所示:其中代碼中的random.randint表示生成隨機整數,下面我們就對random模塊進行詳細介紹。
  • ...退票 車票 身份證 購票 生成器 生成 隨機 實名制 票-上海頻道...
    據《新聞晨報》報導,12306網站在經歷了春運售票首日的癱瘓尷尬以及驗證碼「變臉」遭網友吐槽後,昨日再被質疑該網站存在身份證驗證漏洞,而且因此給黃牛以囤票的機會。晨報記者昨日體驗發現,12306網站確實無法準確驗證身份證號碼和所對應的姓名信息,記者昨日多次利用隨機生成的身份證號碼和自編的名字都能購票成功。
  • Python 模塊學習:random 隨機數生成
    random.randomrandom.random()用於生成一個0到1的隨機符點數: 0 <= n < 1.0random.uniformrandom.uniform的函數原型為:random.uniform(a, b),用於生成一個指定範圍內的隨機符點數,兩個參數其中一個是上限,一個是下限。
  • python和scratch生成隨機不相同的十個數
    scratch生成10個隨機數很簡單,循環10次,循環裡面每次獲取一次1-10範圍內的一個隨機數。可以結果,出現了相同的數字,不符合我們的要求。先自己生成一個包含1-10不同的10個數列表,然後每次隨機從裡面隨機獲取一個,獲取到後添加到新的列表,接著在原來的列表裡刪除對應的元素,重複10次即可。下面是實現過程。1.先生成一個10個數字的列表,數字從1-10不相同。
  • 12306被曝存漏洞 身份證號隨機生成名字隨便取
    晨報記者昨日體驗發現,12306網站確實無法準確驗證身份證號碼和所對應的姓名信息,記者昨日多次利用隨機生成的身份證號碼和自編的名字都能購票成功。不過對於該漏洞可能被黃牛利用的看法,鐵路相關人士並不完全認可。因為現在火車票實行實名制,如不使用正確的身份證號碼和名字,將在取票和乘車兩個環節遇阻。
  • 每日一課 | Python 中生成 0 到 9 之間的隨機整數
    很少有Python示例展示如何生成0(含)和9(含)之間的隨機整數0
  • 在Python中生成隨機數據(指南)
    每當你在Python中生成隨機數據,字符串或數字時,至少應該粗略地了解數據是如何生成的。本篇教程,將會向您介紹用於在Python中生成隨機數據的幾個不同的方法,然後從安全級別,通用性,目的和速度等方面進行比較。我保證本教程不會變成一堂數學課或是密碼學課,因為一開始我就沒有足夠的數學知識進行講授。您僅僅會了解到必要的數學知識,僅此而已。
  • 「每日一練」巧用python生成隨機數
    隨機數在我們的生產和生活中有很多的應用場景,比如說登錄驗證的隨機數字等等,那麼你知道在Python中怎麼生成隨機數嗎?往下看,就是這麼簡單!題目python中生成隨機整數、隨機小數、0--1之間小數方法代碼先上代碼~運行效果題目詳述程序分析:
  • EXCEL表中隨機生成手機號碼(純函數,任意號段)
    由於各種各樣的原因,總有需要隨機生成數據的時候,今天就介紹一個隨機生成手機號碼的案例,廢話少說直接看圖公式如下
  • 黃牛黨用「身份證生成器」刷票成功:一次有1000個號碼(圖)
    記者隨機登錄一個名為「中國大陸身份證號碼生成器」的網頁,輸入「湖南、長沙、嶽麓區、1989等信息」,點擊確認後不到一秒,系統便迅速生成了10個18位身份證號碼。而在名為「中國大陸身份證號碼生成器」的網頁上,一次最多可生成999個不重複的身份證號碼。記者注意到,這類網頁均在顯眼位置註明:切記不可用於非法活動,否則後果自負。
  • 嫌數字「4」不吉利 要求更改身份證號碼
    6月30日下午,南岸區公安分局海棠溪派出所轄區居民譚某到海棠溪派出所戶籍窗口為其剛出世的孫子王某辦理新生兒入戶,戶籍窗口民警查驗了拿來的其孫子的出生證、其兒子媳婦的身份證、戶口本、結婚證和準生證原件及複印件,待譚某填寫好《新生嬰兒登記常住戶口申請表》及提交所有材料原件及複印件後,戶籍窗口民警當場為其辦理了新生入戶手續,通過系統自動生成其孫子的身份證號碼,並將列印出來其孫子的《常住人口登記表
  • 隨機生成N個立方體,學習blender Python隨機數生成
    打開blender控制臺首先輸入import random print(random.randint(0,9))多次執行print(random.randint(0,9)),就能見到系統每次都生成0-9內的隨機整數使用了
  • python隨機函數random分配應用,隨機分配8名老師到3個教室中
    羽憶教程最近遇到一個問題,要隨機分配8名老師到3個辦公室中,這時小編想要了python中的隨機函數random來進行分配工作,感覺小編像個月老一樣。python隨機函數python隨機函數在python中,想要生成隨機數,就需要使用到python隨機函數random。
  • 【Python 第60課】 隨機數
    之前的小遊戲中用到過random中的randint:import randomnum = random.randint(1,100)random.randint(a, b)可以生成一個a到b間的隨機整數,包括a和b。a、b都必須是整數,且必須b≥a。
  • 網遊實名制存在盲點 身份證號碼生成器鑽空
    在交談中,「好日子1573」有些抱怨地告訴記者,現在「防沉迷帳號」遠不如以前好賣了,網上出現了一種「身份證號碼生成器」,可隨意生成符合成年人身份信息的身份證號。不少未成年人會在「身份證號碼生成器」上直接生成一個身份證號碼,去註冊遊戲後同樣可以逃避防沉迷系統的限制。
  • 玩轉Python 中的隨機數
    隨機生成 a 與 b 之間的整數使用 random.randint(a , b) 方法,你可以生成一個 a 與 b 之間的隨機整數,也就是 [a, b] 。當然,如果你想要生成的隨機整數不會包含 b ,也即 [a, b) , 你可以使用 random.randrange() 方法。
  • 身份證號碼查詢
    身份證號碼查詢 身份證號碼查詢姓名  若要得到詳盡準確身份證信息,請到當地公安戶籍管理部門進行相關諮詢。身份證號碼查詢地址 國內身份證號碼歸屬地查詢 身份證真實性驗證居民身份證簡介  1984年4月6日,國務院發布《中華人民共和國居民身份證試行條例》,並且開始頒發第一代居民身份證
  • Python隨機森林 - CodeProject
    Bootstrapping:隨機創建T樹,每生成一個數據集隨機抽樣N次,生成T={T1,T2,T3,T4,T5}。編程我已經準好備了訓練用的數據集及測試集,以便通過python來練習隨機森林。訓練集是與病人相關的數據,其中我們可以知道他們的年齡、性別、醫院等級、以及是否被治癒。
  • 隨機森林算法入門(Python)
    來自:時空Drei - SegmentFault連結:https://segmentfault.com/a/1190000007463203(點擊尾部閱讀原文前往)原文:http://blog.yhat.com/posts/python-random-forest.html
  • 用Word如何提取身份證號碼中的出生日期
    在實際工作中,時常需要通過身份證號碼提取相應的出生日期,以前遇到這種問題,都是打開Excel表格輸入公式提取的,後來發現Word也可以提取,而且提取速度還挺溜的,那如何提取呢?一起來看看吧。(註:圖片中身份證號碼是隨機生成,僅供參考)第一步:刪除不相關內容由於文本是整齊的,所以可以直接藉助Alt鍵進行矩形框選,將身份證號碼以外的內容刪除。