附件文件中包含全国各地区的地区编码,对应身份证的前6位。身份证的前2位代表省名,在文件中可能存在身份证前2位数字后面加4个0的编码,代表省、自治区或直辖市;身份证号前4位代码地区名,在文件中可能存在身份证前4个数字后面加2个0的编码,表示市或地区。省和地区这两个编码也有可能不存在。输入身份证号前6位,查询到该编码对应的省、市、县(区)。某一项查询不到时,返回并输出空字符串。
输入身份证号前6位
参考示例分三行输出省、市、县(区)
输入: 110113 输出: 北京 顺义区
输入: 421221 输出: 湖北 咸宁市 嘉鱼县 平均代码量 15 行
开始你的任务吧,祝你成功!
def file_to_dict(area_file):
"""接收一个表示文件名的字符串为参数,将文件中的数据保存到字典中,返回字典。"""
area_in_dict = {}
with open('IDcode.txt', 'r', encoding='utf-8') as data: # 读文件
for x in data: # 遍历文件对象
ls = x.strip().split(',') # 每行数据切分为列表
area_in_dict[ls[0]] = ls[1] # 得到保存地区编码的字典
return area_in_dict # 返回地区编码字典
def query_area(area_id, area):
"""接收身份证号前6位和编码字典为参数,根据身份证前6位的编码查询所在的省、市、区,以元组形式返回。"""
province = area.get(area_id[:2] + '0000', '') # 省、直辖市和自治区
city = area.get(area_id[:4] + '00', '') # 市或地区
area = area.get(area_id) # 县或区
return province, city, area
if __name__ == '__main__':
areaFile = '8.1 IDcode.txt'
areaId = input()
area_dict = file_to_dict(areaFile) # 调用函数读文件返回地区码字典
address = query_area(areaId, area_dict) # 调用函数查询省、市和区
print(address[0]) # 输出
print(address[1])
print(address[2])