编写检验一个身份证的校验码是否有效的函数
时间: 2024-06-12 07:05:54 浏览: 64
以下是Python代码实现:
```python
def is_valid_id_number(id_number):
"""
检验身份证号码的校验码是否有效
:param id_number: str,身份证号码
:return: bool,校验码是否有效
"""
if len(id_number) != 18:
return False
id_number = id_number.upper()
# 系数
factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
# 校验码对应值
check_code_dict = {
0: '1', 1: '0', 2: 'X', 3: '9', 4: '8',
5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'
}
# 计算校验码
check_sum = 0
for i in range(17):
check_sum += int(id_number[i]) * factor[i]
check_code = check_code_dict[check_sum % 11]
return id_number[-1] == check_code
```
该函数接受一个身份证号码作为参数,然后根据身份证号码的规则计算出校验码,最后检验校验码是否与身份证号码中的校验码一致。如果一致,返回True,否则返回False。
阅读全文