第1关:判断性别
通过身份证的第17位也就是倒数第二位的数字可以辨别该身份证所属人的性别,奇数为男性,偶数为女性。 任务:输入身份证号,第17位若是偶数,输出男性,否则输出女性
如何截取字符串的一个字符
如何判断一个数是奇数还是偶数
通过判断一个数除以2的余数是否为0,可以判断一个数是奇数还是偶数。 如果一个数除以2的余数为0,则该数是偶数,否则为奇数
分支语句
sfzh=input("请输入身份证号")
#代码开始
if int(sfzh[16:17]) % 2 == 0:
print("女性")
else:
print("男性")
#代码结束
第2关:提取出生年月
身份证号的第七位到第十位是出生的年份,第十一位到第十二位是出生的月份,第十三位到第十四位是出生的日号。 本关任务:编写一个小程序,输入身份证号,按9999年99月99日格式输出其出生日期。
字符串切片
格式输出
sfzh=input("请输入身份证号")
#代码开始
print(f"出生日期{sfzh[6:10]}年{sfzh[10:12]}月{sfzh[12:14]}日")
#代码结束
第3关:判断出生地
sfz.txt文件中存储了地区编码和地区名称
身份证的前6位为地区编码,可以在sfz.txt文件中查询到地区编号对应的地区名称
编写程序,输入身份证号,查询并显示对应的地区名称 若该地区编码不在文件中,显示地区名称 未知
文件操作
例
注意:字符串.strip(指定字符)方法,返回去除字符串尾部的指定字符后的字符串。若不指定字符,则去除尾部的空格和换行符。
字典的建立
若要建立以地区编码为键,地区名称为值的字典,可以打开文件,读取一行,将前六个字符(地区编号)作为键,第七个字符到最后(地区名称)作为值,建立字典。
对所有的行循环,就可以建立所有地区编号和名称的字典。
字典的查找
<字典>.get(<键>,<默认值>) 在字典中,若存在该键,则返回相应的值,否则返回默认值 如果地区字典dqzd已经建立,通过get方法可以查找编码对应的地区名称,若无法找到,则返回未知
sfzh=input("请输入身份证号")
#代码开始
n = 0
f1 = open("sfz.txt","r")
for i in f1:
i = i.strip()
if i[:6] == sfzh[:6]:
n += 1
print("地区名称",i[6:])
if n == 0:
print("地区名称 未知")
#代码结束