python写身份证检验码
时间: 2024-09-25 13:08:23 浏览: 71
在Python中,验证中国大陆居民身份证号码的有效性通常涉及到校验位的计算,即通过身份证的前17位数字和特定的算法来确定最后一位校验码。这里介绍一种常见的算法——刘辉校验法:
1. 首先,将身份证号分为前6位、8位地址码、7位出生日期码和4位顺序码四个部分;
2. 对于前17位数,奇数位乘以3,偶数位直接相加得到总和A;
3. 将总和A除以11取余数,如果余数是0,则校验码是10;如果余数是1到9,则校验码就是这个数值;如果余数是10,则校验码是9。
这是一个简单的示例代码:
```python
def verify_id(id_num):
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 刘辉算法权重
check_sum = sum(int(digit) * weight for digit, weight in zip(id_num[:-1], weights))
remainder = check_sum % 11
if remainder == 0:
checksum = '10'
else:
checksum = str(11 - remainder)
return id_num + checksum == id_num[:-1] + checksum
# 使用示例
id_to_test = "123456789012345678"
if verify_id(id_to_test):
print(f"{id_to_test} 是有效的")
else:
print(f"{id_to_test} 是无效的")
阅读全文