输入身份证号码编写程序验证校验码的有效性python
时间: 2024-10-01 16:07:53 浏览: 52
一个计算身份证号码校验位的Python小程序
5星 · 资源好评率100%
在Python中,验证身份证号码的校验码通常涉及中国居民身份证的规则,它采用了18位数字加最后一位校验码的设计。校验码的计算基于数学公式,包括奇偶校验和区域检验。下面是一个简单的示例,演示如何编写一个函数来检查身份证号码的合法性:
```python
def validate_id(id_num):
# 身份证号码由17位数字和最后一位校验码组成
if len(id_num) != 18:
return False
# 前17位分为6组,每组有不同的权值系数
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
# 计算校验码前的累加和,按照权重相乘并求和
sum_val = sum(int(num) * weight for num, weight in zip(id_num[:-1], weights))
# 根据和的奇偶性选择对应的校验码算法
mod = 1 if sum_val % 11 else 0
check_code_1 = (sum_val + mod) // 11
check_code_2 = ((check_code_1 ** 2 - 10) % 11) if check_code_1 > 1 else 0
# 检查最终校验码是否等于实际的校验码
if id_num[-1] == str(check_code_1) or (id_num[-1] == 'X' and check_code_2 == 10):
return True
else:
return False
# 示例
id_number = input("请输入身份证号码:")
if validate_id(id_number):
print("身份证号码有效.")
else:
print("身份证号码无效.")
阅读全文