【问题描述】
输入一个身份证号码,从这个号码中提取出身份证主人的出生日期。
输入数据:
请输入身份证号码:500101200001018456
输出结果:
出生日期是:2000年01月01日
【题前思考】
根据问题描述,填写表2-2-1。
表2-2-1 问题分析
【解题思路】
身份证号码是字符串,可以用索引获取单个字符,用切片获取字符串中的多个字符。字符串的索引号可以是正数,表示从左向右的序号,也可以是负数,表示从右向左的序号。
【程序代码】
【代码分析】
①:num[6:10]表示身份证号码第6位到第9位的字符构成的一个切片,第一个字符下标为0,不包括右边界10。切片的一般格式为num[start:end],表示字符串中,下标从start到end(不包含)的字符构成的新字符串。索引序号可以是正数(从左向右),也可以是负数(从右向左),如图2-2-1所示。
图2-2-1 字符串序列位置索引
②:输出出生年月日,字符串中的%是占位符,将其他变量置入字符串指定位置以生成新字符串。%s代表将对应输出数据转换为字符串格式(%d表示整数,%f表示浮点数)。字符串后的%将其后表达式列表中的项依次映射到字符串中,替换其中的占位符,如图2-2-2所示。
图2-2-2 格式转换映射图
【技术全貌】
切片是从字符串序列中取出一部分字符序列构成一个新字符串的操作,字符串的切片语法格式一般有3种,见表2-2-2。
表2-2-2 切片操作的语法格式