从键盘上输入一串身份证号,要求必须是18位字符,如果长度不对,输出提示“输入长度有无”,对于合法身份证号,判断出生年月,对于满18周岁的成年人和不满18周岁的未成年人,分别输出“你已成年”“还未成年”,根据身份证倒数第二位,判断性别,并分别输出“你是男同胞”“你是女同胞”
时间: 2024-10-14 16:15:48 浏览: 13
首先,你需要编写一个函数来验证用户输入的身份证号码是否合法。18位的中国身份证号码通常由6位地区码、8位出生日期码、3位顺序码和1位校验码组成。你可以使用正则表达式检查其结构。
```python
import re
def validate_id(id_number):
pattern = r'^\d{15}(?:18|19|20)\d{2}(\d|X|x)$'
if not re.match(pattern, id_number):
return "输入长度有误"
else:
return True
# 示例:
id_input = input("请输入身份证号码:")
if validate_id(id_input) == True:
# 接下来处理生日和性别判断
year = int(id_input[6:14])
month = int(id_input[14:16])
day = int(id_input[16:18])
birth_year = str(year)
birth_month = str(month).zfill(2)
birth_day = str(day).zfill(2)
if int(id_input[-1]) % 2 == 0:
sex = "女同胞"
else:
sex = "男同胞"
current_year = datetime.datetime.now().year
if 18 <= (current_year - year) <= 100 and (month > 2 or (month == 2 and day >= 29)):
age = "你已成年"
else:
age = "还未成年"
print(age)
print(sex)
else:
print("输入的不是18位身份证号码")
```
在这个代码示例中,我们先验证了身份证的格式,然后根据身份证最后一位数字(奇数代表男性,偶数代表女性)以及当前年份判断年龄。注意这里假设输入的是有效日期,实际应用中需要进一步处理闰年的规则。