身份证校验 python 第十八位
时间: 2024-05-31 21:06:18 浏览: 121
身份证号码的第十八位是校验码,它是由前十七位号码通过一定的算法得出的,用来验证身份证号码的正确性。校验码的计算方法如下:
1. 将身份证号码前十七位数字分别乘以不同的系数,系数从第一位到第十七位依次为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
2. 将上一步得到的十七个乘积相加得到总和。
3. 将上一步得到的总和除以11,取余数。
4. 根据余数找到对应的校验码,校验码对应关系如下:0-1,1-0,2-X,3-9,4-8,5-7,6-6,7-5,8-4,9-3,10-2。
因此,如果你已知身份证号码的前十七位数字,就可以通过以上方法计算出校验码。以下是 python 实现身份证号码校验码的代码:
```
def get_check_code(id_number):
# 系数
factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
# 校验码对应关系
check_codes = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
# 前十七位数字
id_number_list = list(id_number)[:17]
# 计算乘积和
product_sum = sum([int(id_number_list[i]) * factors[i] for i in range(17)])
# 取余数
mod = product_sum % 11
# 返回校验码
return check_codes[mod]
```
阅读全文