python身份证号码校验
时间: 2023-11-06 22:58:49 浏览: 141
身份证号码检查函数--python
4星 · 用户满意度95%
以下是一个Python程序,用于验证身份证号码的有效性。它使用了身份证号码的校验规则,包括长度、前6位地区码、生日日期码、顺序码和校验码的计算方法。
```python
def validate_id_number(id_number):
# 长度校验
if len(id_number) != 18:
return False
# 地区码校验
region_code = id_number[:6]
if region_code not in valid_region_codes:
return False
# 生日日期码校验
birthday_code = id_number[6:14]
try:
datetime.datetime.strptime(birthday_code, '%Y%m%d')
except ValueError:
return False
# 顺序码校验
order_code = id_number[14:17]
if not order_code.isdigit():
return False
# 校验码计算
factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code = id_number[17].upper()
check_sum = sum([int(id_number[i]) * factors[i] for i in range(17)])
remainder = check_sum % 11
check_codes = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
if check_codes[remainder] != check_code:
return False
return True
valid_region_codes = [...] # 有效地区码列表
# 示例用法
id_number = '110101199001011234'
if validate_id_number(id_number):
print('身份证号码有效')
else:
print('身份证号码无效')
```
请注意,该程序仅验证身份证号码的格式和校验码,而不会验证该号码是否实际存在。在实际应用中,应该结合身份证号码的使用场景和其他身份验证手段,确保身份证号码的真实有效性。
阅读全文