0%

身份证号码验证位生成

一个关于如何生成身份证号码验证位, 即身份证号码最后一位的 py 脚本

参考链接

身份证号码的组成

身份证号码一共 18 位,

其中 1-2 位为省份代码,

3-4 位为 市代码,

5-6 位为县代码,

7-14 位为出生年月日,

15-17 位为顺序码, 其中 17 位, 奇数代表男性, 偶数代表女性,

最后一位为校验码, 根据前面 17 位算出.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
validate = ['1','0','X','9','8','7','6','5','4','3','2']

def getValidateCode(id):
sum = 0
mode = 0
for idx, var in enumerate(id):
sum += int(var) * weight[idx]
mode = sum%11
return validate[mode]

id = ''
validate = getValidateCode(id)
print(validate)

将 id 替换成你的身份证号前 17 位, 运行脚本, 获得身份证号最后一位.

原理很简单, 结合回形针的视频理解即可.