请编写一个程序,通过计算校验码判断输入的身份证号码是否为一个有效身份证号码。若是有效号码则输出ok,否则输出error.
时间: 2024-10-10 08:09:17 浏览: 25
一个计算身份证号码校验位的Python小程序
5星 · 资源好评率100%
在中国,身份证号码由18位数字组成,分为前6位、7到14位代表地区和个人出生信息,最后四位是校验码,用于核对整个号码的有效性。常用的校验算法是基于算术运算和奇偶性检查。
以下是一个简单的Python程序示例,它使用了中国身份证校验规则来验证输入的身份证号码:
```python
def check_id(id_number):
# 确保输入长度为18
if len(id_number) != 18:
return 'error'
# 切割并处理各部分
region = id_number[:6]
birth_info = id_number[6:14]
check_sum = id_number[17]
# 校验码计算
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 验证码权重数组
sum_values = sum(int(x) * y for x, y in zip(reversed(birth_info), weights)) % 11
# 对于最后一位校验码,奇数位乘以2再加总和
if sum_values <= 1:
real_check_sum = str(1)
else:
real_check_sum = str(sum_values + 1)
# 如果输入的校验码和计算出的一致,返回ok,否则返回error
return 'ok' if check_sum == real_check_sum else 'error'
# 使用函数检验身份证号
id_to_test = input("请输入一个18位的身份证号码:")
result = check_id(id_to_test)
print(result)
```
阅读全文