题目

程序设计题:身份证的编码问题。中国大陆居民身份证号码由18位数字组成:第1至6位的数字为地址代码,表示某省某市某区或县;第7至14位的数字代表居民的出生年月日;第15至17位的数字代表同一辖区内、同年同月同日出生的顺序号,其中第17位数字表示性别,奇数为男性,偶数为女性;第18位数字代表校验码。校验码是0~10这十个数字中的任意一个,其中10用X表示。 校验码的计算方法如下: ①将身份证号码的前17位数字分别乘以对应的系数。对应关系如下: 号码位 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 系数 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ②将17位数字和系数相乘的结果累计求和; ③用所求的和除以11得到余数; ④用余数与身份证号码的最后一位校验码进行对应,对应关系如下: 余数 0 1 2 3 4 5 6 7 8 9 10 校验码 1 0 X 9 8 7 6 5 4 3 2 (1) 小明身份证号码的前17位为33900520020808621,则他的第18位校验码为 。 (2) 小明想设计一个Python程序用于身份证号码验证,实现如下功能:输入身份证号码,输出出生日期、性别,实现判断最后一位校验码是否正确。部分程序代码如下所示,请补全代码并上机调试。 ID=input("请输入十八位身份证号码: ")#输入身份证号码 sex={0:"女",1:"男",2:"女",3:"男",4:女,5:"男": 6:"女",7:"男"."8:"女",9:"男"} ID_ birth=ID[6:14] ID_ sex=ID[16] ID_ check=ID[17] #求出year,month,day      ①   print("出生日期: "+year+"年"+ month+"月"+day+"日") print("性别:",   ②    ) ID=list(ID)                    #把字符串转成列表 ID=list(map(int, ID[0:17]))   #把前17个元素转成整型 ID_ CHECK=["1","0'","X'","9“,"8","7”,"6“,"5”,"4","3","2"]     ③     #用列表存储每一位权值 #17位数字和系数相乘的结果累计求和 #求余数 #求验证码 print("验证码是否正确:", check-= =ID_check) 答案: 【1】4 ①: year=ID_ birth[0:4]     #求年份 month=ID_ birth[4:6]    #求月份 day=ID_ _birth[6:8]    #求日期 ②:sex[int(ID_ _sex)] ③: W=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]      #每一位的权值 sum=ID[0]*W[0]+ID[1]*W[1]+ID[2]*W[2]+ID[3]*W[3]+ID[4]*W[4]\    #“\”表示换行,求和      +ID[5]*W[5]+ID[6]*W[6]+ID[7]*W[7]+ID[8]*W[8]+ID[9]*W[9]\      +ID[10]*W[10]+ID[1]*W[11]+ID[12]*W[12]+ID[13]*W[13]\      +ID[14]*W[14]+ID[15]*W[15]+ID[16]*W[16] yushu=sum%11     #求余数 check=ID_ CHECK[yushu]      #求验证码 或其他等价答案。
信息技术 试题推荐
最近更新