中国的居民身份证号是一个18个字符的字符串,其各位上的字符代表的意义如下:
第1、2位数字表示:所在省份的代码,例如吉林的省份代码是22;
第3、4位数字表示:所在地区的代码,例如吉林地区代码是02;
第5、6位数字表示:所在市县的代码,例如永吉县的代码是21;
第7--14位数字表示:出生年、月、日;
第15、16位数字表示:身份证注册地的派出所的代码;
第17位数字表示性别:奇数表示男性,偶数表示女性;
第18位数字是校检码,用来检验身份证号的正确性。校检码可以是0-9中的一个数字,也可能是字母X。
输入一个身份证号,编程判断其长度是否正确;输出其出生年月日。(注:本书测试所用身份证号是用程序模拟生成的虚拟号码)
输入格式
输入一个合法的身份证号字符串
输出格式
类似以下格式输出:
出生于2000年11月11日
# -*- coding:utf-8 -*-
import re
while(True):
id_card = input("输入一个合法的身份证号字符串:")
key = "^[1-9]{2}\d{4}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$"
brea = re.match(key,id_card)
if brea != None :
# print(brea.group())
# print("你的身份证号码为:" + brea.group())
year = int(id_card[6:10]) # 截取年份
month = int(id_card[10:12]) # 截取月份
day = int(id_card[12:14]) # 截取日期
print("出生于 {} 年 {} 月 {} 日".format( year, month, day ))
print("=" * 30)
break
else :
print("匹配失败,输入一个合法的身份证号字符串")
题目只要求判断其长度是否正确;输出其出生年月日。其它知识点,没有用到。
ID = input()
if len(ID)==18:
print(f'出生于{ID[6:10]}年{ID[10:12]}月{ID[12:14]}日')
else:
print('长度不正确')