9.编写一个类,能识别输入的身份证号码对错,该类还有输出省份、出生年月、男女的方法属性
时间: 2024-10-09 15:02:46 浏览: 54
从键盘输入一个18位或15位的身份证号码,显示器上输出年龄、性别、省份信息。
在Python中,我们可以创建一个名为`IDCardValidator`的类,利用正则表达式库`re`来验证身份证号码的基本规则,并通过身份证号码的前六位获取省份信息,第七位到第十四位确定出生年月日,最后一位则是性别码。这里给出一个基础版的实现,注意实际验证中需要考虑更多的复杂情况,如校验码计算等:
```python
import re
class IDCardValidator:
def __init__(self, id_card_number):
if not re.match(r'^\d{15}$', id_card_number): # 验证身份证号码格式
raise ValueError("Invalid ID card number format")
self.id_card_number = id_card_number
@property
def province(self):
return "%s省" % self.id_card_number[:2]
@property
def birth_date(self):
year = int(self.id_card_number[6:10])
month = int(self.id_card_number[10:12])
day = int(self.id_card_number[12:14])
return f"{year}-{month:02d}-{day:02d}"
@property
def gender(self):
last_digit = self.id_card_number[-1]
if last_digit in ('0', '1', '2'):
return "女"
elif last_digit in ('3', '4', '5'):
return "男"
else:
raise ValueError("Invalid gender code")
# 示例
try:
validator = IDCardValidator('123456789012345678')
print(f"Province: {validator.province}")
print(f"Birth Date: {validator.birth_date}")
print(f"Gender: {validator.gender}")
except ValueError as e:
print(e)
```
这个类的主要特点是,构造函数会检查输入的身份证号码是否有效,然后提供三个属性方法:`province` 返回省份信息,`birth_date` 返回生日(格式为YYYY-MM-DD),`gender` 根据最后一位数字返回性别。
阅读全文