帮我写一个关于身份证号码算法的代码
由于每个国家和地区的身份证号码算法都不同,因此需要先确定你需要的是哪个国家或地区的身份证号码算法。
以下是中国大陆身份证号码算法的代码示例:
def validate_id_number(id_number):
"""验证身份证号码是否合法"""
# 身份证号码长度必须为18位
if len(id_number) != 18:
return False
# 身份证号码的前17位必须是数字
if not id_number[:17].isdigit():
return False
# 身份证号码的最后一位可能是数字或者X(代表10)
last_char = id_number[-1]
if not (last_char.isdigit() or last_char.upper() == 'X'):
return False
# 根据身份证号码算出校验码,与最后一位比对
check_code = '10X98765432'
weighted_sum = sum(int(id_number[i]) * int(check_code[i]) for i in range(17))
remainder = weighted_sum % 11
calculated_check_code = check_code[remainder]
if last_char.upper() != calculated_check_code:
return False
# 身份证号码合法
return True
使用示例:
id_number = '110101200003073834'
if validate_id_number(id_number):
print(f'{id_number} 是合法的身份证号码')
else:
print(f'{id_number} 不是合法的身份证号码')
输出结果:
110101200003073834 是合法的身份证号码
原文地址: https://www.cveoy.top/t/topic/K53 著作权归作者所有。请勿转载和采集!