import re
def is_valid_id_number(id_number):
# 身份证号正则表达式
pattern = r'^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[0-9X]$'
# 匹配身份证号
match = re.match(pattern, id_number)
if match:
# 计算校验码
factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
checksum = sum(int(id_number[i]) * factors[i] for i in range(17)) % 11
checksum_dict = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
expected_checksum = checksum_dict[checksum]
# 判断校验码是否正确
if expected_checksum == id_number[-1]:
return True
else:
return False
else:
return False
# 从键盘输入身份证号
id_number = input("请输入身份证号码:")
# 判断身份证号是否合法
if is_valid_id_number(id_number):
print("身份证号合法")
else:
print("身份证号不合法")
你可以在 C 站自行搜索一下,内容很多