编写程序,从键盘输入一个用户的18位身份证号码,从中提取出生日期并输出。
时间: 2024-10-14 12:04:24 浏览: 113
在Python中,可以使用正则表达式库`re`来匹配和提取身份证号码中的出生日期。身份证号码的第7到14位代表出生年月日。下面是一个简单的示例:
```python
import re
def extract_birth_date(id_number):
pattern = r"(^\d{15}$)|(\d{17}(?:\d|X|x))" # 匹配15位和18位身份证号码
match = re.match(pattern, id_number)
if match and len(match.group()) == 18: # 确保是18位身份证
birth_date = f"{id_number[6:14]}-{id_number[14:16]}-{id_number[16]}"
return birth_date
else:
print("输入的不是有效的18位身份证号码.")
return None
# 获取用户输入
user_input = input("请输入您的18位身份证号码:")
result = extract_birth_date(user_input)
if result:
print(f"出生日期:{result}")
else:
print("无法提取出生日期.")
相关问题
2. 编写程序,输入一个18位的身份证号码,从中提取出生日期,并以“某人于*年*月*日出生”的格式输出。
好的,我可以帮你编写这个程序。以下是 Python 代码实现:
```python
id_number = input("请输入18位身份证号码:")
birth_year = id_number[6:10]
birth_month = id_number[10:12]
birth_day = id_number[12:14]
print("某人于{}年{}月{}日出生".format(birth_year, birth_month, birth_day))
```
代码逻辑很简单,就是利用字符串的切片功能,从身份证号码中截取出生年月日,然后使用字符串格式化输出。注意,这里假设输入的身份证号码格式正确,如果输入错误的身份证号码,程序可能会出错。
编写一个函数,提取有效的 18 位身份证号码,从中提取出生日期,并以“出生日期是**** 年**月**日-年龄为**岁”的格式输出。
你可以使用正则表达式来提取有效的18位身份证号码,并从中提取出生日期。然后,你可以使用datetime模块来计算年龄,并以指定的格式输出。以下是一个示例函数:
```python
import re
from datetime import datetime
def extract_birthdate(id_number):
pattern = r'^\d{6}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\d{3}[\dX]$'
match = re.match(pattern, id_number)
if match:
birthdate_str = match.group(1) + match.group(2) + match.group(3)
birthdate = datetime.strptime(birthdate_str, '%Y%m%d')
age = (datetime.now() - birthdate).days // 365
output = f"出生日期是{birthdate.year}年{birthdate.month}月{birthdate.day}日-年龄为{age}岁"
return output
else:
return "无效的身份证号码"
id_number = "身份证号码"
result = extract_birthdate(id_number)
print(result)
```
请注意,你需要将"身份证号码"替换为实际的身份证号码。这个函数将提取出生日期并计算年龄,然后以指定的格式输出。如果身份证号码无效,则会返回"无效的身份证号码"。
阅读全文