习题解析之:个人信息提取
【问题描述】
用户输入自己的个人信息,格式如下:
0122923450321 王昊 法学1801 河北 2001年
数据分别表示:学号 姓名 专业班级 籍贯 出生年份,各数据间空格间隔
有些用户没有按照规则输入数据,输入自己出生年份的时候写成了类似‘1900年生’或‘出生于1985’或‘19岁生于2006年11月’的数据格式。请注意程序此时仍然需要正确读取该项数据,本题保证这些用户输入时一定只含有1个4位数字连续组成的年份数据。
请按照输出样式输出姓名,班级,出生年份。
输入格式
按如下示例,在一行内依次输入5个字符串,分别表示:学号 姓名 专业班级 籍贯 出生年份,各数据间空格间隔
0122923450321 王昊 法学1801 河北 2001年
输出格式
按如下示例,分行依次输出姓名,班级,出生年份
姓名:王昊
班级:法学1801
出生:2001年
示例
输入:
0122923450321 王昊 法学1801 河北 2001年
输出:
姓名:王昊
班级:法学1801
出生:2001年
【编程思路】
将一行输入的字符串用 input().split() 函数拆分为含 5 个子字符串的列表 info,则 info[0] 就是学号,info[1] 就是姓名,info[2] 就是专业班级,info[3] 就是籍贯,info[4] 就是出生年份。
本题的关键是要从输入的出生年份中正确提取年份数据。在 info[4] 字符串中,有类似“1900年生”或“出生于1985”或“19岁生于2006年11月”的数据格式,但题目保证出生年份输入时一定只含有1个4位数字连续组成的年份数据。
因此,可用循环 for i in range(len(info[4]) - 3): 依次切分出出生年份信息中的连续 4 个字符 info[4][i:i + 4],如切分出的连续 4 个字符均是数字,则就是需要提取的年份数据。
str.isdigit() 函数用于判断字符串是否全部由数字字符组成,若字符串全部由数字字符组成,返回值为 True;否则为 False。
编写的源程序如下:

浙公网安备 33010602011771号