tft每日頭條

 > 科技

 > python識别身份證過程

python識别身份證過程

科技 更新时间:2025-02-22 04:11:31

前言

本系統可以實現身份證号真僞驗證,年齡、性别及發證地查詢,看起來是不是很高大上,其實做起來不是很複雜,涉及知識主要有Python字符串處理、表格讀寫和GUI制作,适合有一定python基礎的朋友練手

實現效果圖:

python識别身份證過程(用python做全國身份證号驗證及查詢系統)1

系統

注意:很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。為此我建了個python學習資源圈裡面有2020年最新學習資料,如果你正在學python,可以關注我,後台私信我 ‘p’ 免費獲取!還有老司機解答哦

第一步:身份證号解析

python識别身份證過程(用python做全國身份證号驗證及查詢系統)2

身份證分解

身份證号一般由18位号碼組成,前6位為地址碼,第7至14位為出生日期碼,第15至17位為順序碼,第18位為校驗碼。6位地址碼為編碼對象戶口所在縣(市、區)的行政區劃代碼;8位出生日期碼為出生年月日;3位順序碼為縣(市、區)所轄派出所的分配碼,順序碼的奇數分配給男性,偶數分配給女性;1位校驗碼是按統一公式計算出來的。

第二步:歸類整理地址碼與區縣對應關系

這個網上比較常見,随便搜索1個身份證号都會返回所在的區縣地址,我們要做的是把所有的對應關系都找到,恰巧網上已經有現成的了,不過要稍加整理,大家可以去網上找一下,但是要擦亮眼睛啊,有一個版本是錯的,實在找不到的可以聯系我,我已經整理好存入表格中

python識别身份證過程(用python做全國身份證号驗證及查詢系統)3

分析

第三步:驗證身份證号真僞

身份證最後一位校驗碼算法如下:①将身份證号碼前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。代碼實現如下:

python識别身份證過程(用python做全國身份證号驗證及查詢系統)4

代碼

第四步:查詢地區

規則參考第一步,python兩行代碼就搞定了

python識别身份證過程(用python做全國身份證号驗證及查詢系統)5

代碼

不得不說,python就是簡單方便

第五步:計算出年齡及性别

規則同樣參考第一步,代碼如下:

python識别身份證過程(用python做全國身份證号驗證及查詢系統)6

代碼

到此為止,項目的主體功能已經實現,下面要想辦法用GUI界面實現。

第六步:制作GUI界面

本步驟主要用PyQt5實現,下面我把核心代碼貼出來:首先是以網格方式對标簽及文本框進行布局,并用setStyleSheet對文本框進行修飾

python識别身份證過程(用python做全國身份證号驗證及查詢系統)7

代碼

然後是設置查詢按鈕并布局,再與check函數(信号)綁定

python識别身份證過程(用python做全國身份證号驗證及查詢系統)8

代碼

接着是在check函數中将查詢到的結果在文本框中顯示出來

python識别身份證過程(用python做全國身份證号驗證及查詢系統)9

代碼

最後設置主窗口圖片背景

python識别身份證過程(用python做全國身份證号驗證及查詢系統)10

代碼

到此為止,本項目就大功告成了,你學會了嗎?

但是要聲明一下,本文所介紹的查詢功能均為正向查詢,即在已知身份證号的前提下,解析原則來源于網絡,不敢保證100%準确,更不能反向推算出個人身份證号,所以不涉及侵犯隐私問題。最後注意:很多人學Python過程中會遇到各種煩惱問題,沒有人解答容易放棄。為此我建了個python學習資源圈裡面有2020年最新學習資料,如果你正在學python,可以關注我,後台私信我 ‘p’ 免費獲取!還有老司機解答哦本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved