python输入一个身份证号,输出性别及出生日期
时间: 2023-05-20 15:07:23 浏览: 418
可以使用 Python 中的正则表达式来提取身份证号中的出生日期和性别信息,具体实现如下:
```python
import re
id_card = input("请输入身份证号:")
# 正则表达式匹配出生日期和性别
birthday_match = re.search(r"\d{6}(\d{4})(\d{2})(\d{2})", id_card)
sex_match = re.search(r"([1-9]\d)(\d{2})(\d{2})\d{2}[\dxX]", id_card)
if birthday_match and sex_match:
year, month, day = birthday_match.groups()
sex = int(sex_match.group(1))
if sex % 2 == 0:
gender = "女"
else:
gender = "男"
print("出生日期:{}年{}月{}日,性别:{}".format(year, month, day, gender))
else:
print("身份证号格式错误!")
```
举个例子,如果输入身份证号 `110101199003075778`,程序会输出:
```
出生日期:1990年03月07日,性别:男
```
相关问题
用python编写程序:输入一个身份证号,输出性别及出生日期 如果号码错误,输出:输入的身份证号位数错
误或格式错误。
代码如下:
```python
id_number = input("请输入身份证号:")
id_len = len(id_number)
if id_len != 18:
print("输入的身份证号位数错误")
else:
try:
year = int(id_number[6:10])
month = int(id_number[10:12])
day = int(id_number[12:14])
sex = int(id_number[16])
if sex % 2 == 0:
gender = "女"
else:
gender = "男"
print("出生日期:{}年{}月{}日".format(year, month, day))
print("性别:{}".format(gender))
except ValueError:
print("输入的身份证号格式错误")
```
程序中使用了try-except语句来捕获可能出现的ValueError异常,以防止程序在解析身份证号时崩溃。如果输入的身份证号位数错误,直接输出错误提示信息;如果输入的身份证号格式错误,也会输出错误提示信息。如果输入的身份证号正确,程序会解析出出生日期和性别,并输出。
程序运行时,首先输入人数n,而后依次输入每个人的身份证号,输出其出生日期与性别。python
代码如下:
```python
# 导入datetime模块
import datetime
# 输入人数n
n = int(input("请输入人数:"))
# 循环输入身份证号
for i in range(n):
id_num = input("请输入身份证号:")
# 判断身份证号是否合法
if len(id_num) == 18:
try:
birth_year = int(id_num[6:10])
birth_month = int(id_num[10:12])
birth_day = int(id_num[12:14])
# 根据身份证号计算出出生日期
birth_date = datetime.datetime(birth_year, birth_month, birth_day)
# 输出出生日期
print("出生日期:", birth_date.strftime('%Y-%m-%d'))
# 判断性别,奇数为男,偶数为女
gender = int(id_num[-2])
if gender % 2 == 1:
print("性别:男")
else:
print("性别:女")
except ValueError:
print("身份证号输入有误!")
else:
print("身份证号输入有误!")
```
运行效果:
```
请输入人数:2
请输入身份证号:110101200001017835
出生日期: 2000-01-01
性别:男
请输入身份证号:320102199904120062
出生日期: 1999-04-12
性别:女
```