識別一串身份證是否是真實的身份證號碼: 公民身份號碼是特徵組合碼,共18位,由十七位數字本體碼和一位數字校驗碼組成。 排列順序從左至右依次為:六位數字位址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。
作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的。
身份證第18位(校驗碼)的計算方法:
1、將前面的身份證號碼17位數分別乘以不同的係數。 從第一位到第十七位的係數分別為: [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]。
2、將身份證前17位數字和係數相乘的結果相加。
3、用加出來的總和除以11,看餘數是多少?
4、餘數只可能有[0,1,2,3,4,5,6,7,8,9,10]這11個數字。 其分別對應的最後 一位身份證的號碼為 [1,0,x,9,8,7,6,5,4,3,2]。
5、通過上面得知如果餘數是2,就會在身份證的第18位數字上出現羅馬數字的ⅹ。如果餘數是10,身份證的最後一位號碼是2。
實驗身份證號:『110000198003198182』/『440204199406184727』
案例的主要分析思路為三步:
# 1. 判斷位數18
# 2. 擷取前17位和最後一位
# 3. 計算除以11之後的餘數是多少
defcheck_function
(id_num)
:# 個數上判斷是否18位
iflen
(id_num)
==18
:# 獲取前17位和最後一位
num17 = id_num[:17
] num_last = id_num[-1
]# 前17位數字和係數相乘的結果相加
# 係數是固定的
moduls =[7
,9,10
,5,8
,4,2
,1,6
,3,7
,9,10
,5,8
,4,2
]# 前17位字元轉化成int型別
num17 =
map(
int,num17)
# [1,1,0,0,.....]
# 將兩個列表的對應資料進行打包
num_tuple =
zip(num17,moduls)
# [(1, 4), (2, 5), (3, 6)]
# 對應位置乘積
num =
list
(map
(lambda x:x[0]
*x[1
],num_tuple)
)# print(list(num))
# 求和,取餘數
mod =
sum(num)%11
print
(mod)
# 根據結果與最後一位進行判斷
(身份證號碼第十五位到十七位)位址碼所標識的區域範圍內,對同年、月、日出生的人員編定的順序號。 其中第十七位奇數分給男性,偶數分給女性。 前兩位代表的是省,三位和四位代表的市
def
id_infocheck
(id_num)
:# 1. 處理文字(每一行變成字典中鍵值對)
# 不用每一次都寫關閉
with
open
('./area.txt'
,'r'
,encoding=
'utf-8'
)as f:
codelist = f.readlines(
)# print(codelist)
list1 =
[i.split(
)for i in codelist]
# 二維的列表轉化成字典
code_dict =
dict
(list1)
# 2. 獲取地區
six_num = id_num[:6
]# 是哪乙個縣
# print(code_dict[six_num])
two_num = id_num[:2
]+'0000'
print
(code_dict[two_num]
) four_num = id_num[:4
]+'00'
print
(code_dict[four_num]
)
birth= id_num[6:
14]print
(birth)
***_num =
int(id_num[14:
17])if ***_num %2==
0:print
('女'
)else
:print
('男'
)# 生肖
python身份證校驗
驗證規則如下 長度必須為18位 格式為 前17位是數字,最後一位是數字或者x 不區分大小寫 前6位是地區碼,必須存在 第7位到12位是出生日期,必須是存在的日期 最後一位是驗證位,規則必須匹配 輸入為乙個身份證號的字串 輸出為乙個tuple 0 是否是身份證 1 錯誤資訊或者所屬地區 import ...
Python 身份證核對
id card input 請輸入身份證號碼 存放身份證 jy id card len id card 1 len id card 該位是最後一位用於最後的比較 iflen id card 18 當你輸入身份證的時候必須是18位 x 7 9,10 5,8 4,2 1,6 3,7 9,10 5,8 4...
python驗證身份證
def get checkcode id 計算身份證號碼的校驗位 param id number str string 身份證號的前17位,比如 3201241987010100 returns 返回型別 tuple flag bool 如果身份證號格式正確,返回 true 格式錯誤,返回 fals...