python请编写程序,要求输入任意一个身份证号,验证该身份证是否有效。
时间: 2024-09-14 17:13:41 浏览: 90
在Python中,验证身份证号码的有效性通常涉及到对18位数字的校验规则,包括奇偶校验、地区码、出生日期等信息。以下是一个简单的例子,利用正则表达式来检查前17位数字,并通过计算校验码来验证最后一位:
```python
import re
def validate_id(id_num):
# 正则匹配15位数字部分
pattern = r'^\d{17}(\d|X|x)?$'
if not re.match(pattern, id_num):
return False
# 计算校验码
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
checksum = sum(int(num) * weight for num, weight in zip(id_num[:-1], weights)) % 11
# 根据计算结果判断校验码
check_chars = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
if checksum == 0 or check_chars[checksum - 1] == id_num[-1]:
return True
else:
return False
# 用户输入身份证号码
id_input = input("请输入身份证号码(18位): ")
if validate_id(id_input):
print("身份证号码有效")
else:
print("身份证号码无效")
阅读全文