请用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
以下是一个用Python编写的身份证校验程序:
def validate_id(id_number):
# 校验身份证号码长度和格式
if len(id_number) != 18:
return False
if not id_number[:-1].isdigit() or not (id_number[-1].isdigit() or id_number[-1].upper() == 'X'):
return False
# 定义身份证号码校验规则
coefficients = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code_mapping = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
# 计算校验码
checksum = sum(int(id_number[i]) * coefficients[i] for i in range(17))
remainder = checksum % 11
check_code = check_code_mapping[remainder]
# 比较校验码
if id_number[-1].isdigit():
return check_code == id_number[-1]
else:
return check_code == id_number[-1].upper()
# 测试
id_number = input("请输入身份证号码:")
if validate_id(id_number):
print("身份证号码校验通过")
else:
print("身份证号码校验不通过")
请注意,该程序只是简单的校验身份证号码的格式和最后一位校验码是否正确,无法保证身份证号码的真实性
原文地址: http://www.cveoy.top/t/topic/i0Sg 著作权归作者所有。请勿转载和采集!