python代码写验证身份证号是否为真。 附录: 身份证号码中的校验码是身份证号码的最后一位。公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码,最后一位是数字校验码。 身份证校验码的计算方法如下: 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;
时间: 2023-12-27 08:05:34 浏览: 47
以下是Python代码实现身份证号码校验:
```python
def verify_id_number(id_number):
# 加权因子
weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
# 校验码对应值
check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
# 将身份证号码转换为数组,方便取值
id_number_list = list(id_number)
# 判断身份证号码长度是否为18位
if len(id_number) != 18:
return False
# 前17位数值相乘求和
total = sum([int(id_number_list[i]) * weight_factor[i] for i in range(17)])
# 取余数
remainder = total % 11
# 判断校验码是否正确
if check_code[remainder] != id_number_list[-1]:
return False
return True
```
使用方法:
```python
id_number = 'xxxxxxxxxxxxxxxxx' # 18位身份证号码
is_valid = verify_id_number(id_number)
if is_valid:
print('身份证号码正确')
else:
print('身份证号码错误')
```
注意:身份证号码中的x代表数字,具体的数字需要根据实际情况替换。