@[toc]
每個人都有一個獨特的身份證號溅话,名字可能會有重名缎讼,但身份證號不會澎语。
XXYYZZ ABCD EF GH IJK L 身份證號長度是18位熊户,前17位全部是數(shù)字萍膛,第18位多數(shù)人是數(shù)字,少數(shù)人是字母“X”嚷堡,實際是羅馬數(shù)字10蝗罗。
前六位:省市縣
前6位:XXYYZZ 省市縣(戶口所在地的行政區(qū)代碼)
中間八位:出生年月日
ABCD為出生年,EF為出生月蝌戒,GH為出生日串塑;IJK為順序編碼(在同一區(qū)域內(nèi),對同一天出生的人員編制的順序號)北苟。
倒數(shù)第二位:性別
K為性別代碼(單數(shù)為男桩匪,雙數(shù)為女);
由上可知友鼻,如果知道真實的身份證號傻昙,那么就可以得到地址、生日和性別彩扔。
最后一位:校驗碼
L為末位校驗碼(按統(tǒng)一的公式計算出來妆档,計算結(jié)果是數(shù)字0-10,用X代替10)虫碉。
根據(jù)前面十七位數(shù)字碼贾惦,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。
身份證的最后一位是根據(jù)前面的十七位數(shù)字碼而生成的校驗碼,所以生成校驗碼就會有一個算法的存在须板。
1)將前面的身份證號碼17位數(shù)分別乘以不同的系數(shù)碰镜。從第一位到第十七位的系數(shù)分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2;
2)將這17位數(shù)字和系數(shù)相乘的結(jié)果相加习瑰;
3)用加出來的和除以11绪颖,看余數(shù)是多少;
4)余數(shù)只可能有0-1-2-3-4-5-6-7-8-9-10這11個數(shù)字杰刽。其分別對應(yīng)的最后一位身份證的號碼為1-0-X-9-8-7-6-5-4-3-2菠发;
在網(wǎng)上找到了省市區(qū)六位代碼寫成了文件shenfen.txt
,簡單嘗試了一下,可能還有很多疏漏贺嫂。
# -*- coding: utf-8 -*-
"""
Created on Sat Apr 3 20:11:39 2021
@author: lenovo
"""
import sys
number = input('請輸入身份證號:')
lis1 = [int(i) for i in number]
lis2 = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
if len(number)!=18:
print('身份證號位數(shù)有誤')
sys.exit(0)
verify = sum(lis1[i]*lis2[i] for i in range(17))%11
test1 = [i for i in range(11)]
test2 = [1,0,'X',9,8,7,6,5,4,3,2]
month = [i+1 for i in range(12)]
year = [i for i in range(1900,2021)]
day = [i+1 for i in range(31)]
for i in range(len(test1)):
if i!=2:
if test1[i] == verify:
if test2[i]==eval(number[-1]):
pass
else:
print('身份證號錯誤')
sys.exit(0)
else:
if test1[i] == verify:
if test2[i]==number[-1]:
pass
else:
print('身份證號錯誤')
sys.exit(0)
f = open('shenfen.txt','r',encoding = 'utf-8')
txt = f.readline()
flag = 1
for txt in f:
info = txt.split()
#print(info)
if info[0] == number[:6]:
if int(number[6:10]) in year:
if int(number[10:12]) in month:
if int(number[12:14]) in day:
print('\n地區(qū):{}'.format(info[1]))
print('生日:{}年{}月{}日'.format(number[6:10],number[10:12],number[12:14]))
if int(number[-2])%2!=0:
print('性別:男')
else:
print('性別:女')
flag = 0
else:
print('身份證號錯誤')
if flag:
print('未查詢到結(jié)果')
f.close()
代碼放在了我的gitee上滓鸠,順便復(fù)習(xí)了一下git的使用哈哈。
git init
git status
git add shenfen.txt shenfenzheng.py
git commit -m 'update'
git remote add identity 'https:www.gitee/Waston-swx/identity.com'
git remote -v
git pull origin master
git push origin master
線上查詢的網(wǎng)址:http://www.dffyw.com/sfzcx/