县区查询
类型:文件
描述
附件中的文本文件里包含河北省的地区信息。
文件第一行为省名和地级市名,其他每行的第一个地名为地级市名,后面地名为该地区的下辖区、县和县级市的名称,如下所示:
河北,石家庄,唐山,秦皇岛,邯郸,邢台,保定,张家口,承德,沧州,廊坊,衡水
石家庄,长安区,桥东区,......,藁城市,鹿泉市
唐山,路南区,路北区,......,遵化县,迁安县
秦皇岛,海港区,三海关区......,抚宁县,卢龙县
邯郸,邯山区,丛台区,......,曲周县,武安县
邢台,桥东区,桥西区,......,南宫市,沙河西
保定,新市区,北市区,......,安国市,高碑店市
张家口,桥东区,桥西区,......,赤城县,崇礼县
承德,双桥区,双滦区,......,围场蒙古做自治县
沧州,新华区,运河区,......,河间市,黄骅市
廊坊,安次区,广阳区,......,三河市,霸州市
衡水,桃城区,枣强县,......,深州市,冀州县
下面代码可以将该文件的内容读到列表中,运行这段代码,查看输出的列表内容,完成要求的操作:
with open('hebei.txt', 'r', encoding='utf-8') as file:
district_ls = [x.split(',') for x in file]
print(district_ls)
- 如果用户输入的是地级市名,以列表形式输出其下辖所有下辖区、县和县级市名称。
- 如果用户输入的是市辖区、县或县级市名,则输出其上一级的地级市名,若有的市辖区名在不同地级市中同时存在时,输出全部地级市名。
输入格式
输入一个地区或县区名
输出格式
输出其下辖所有区县名称或其上一级的地级区名(有的县区名或能在不同地级区中同时存在,则分多行打印几个上级地区名。)
示例1
输入:
唐山
输出:
['路南区', '路北区', '古治区', '开平区', '丰南区', '丰润区', '曹妃甸区', '滦县', '滦南县', '乐亭县', '迁西县', '玉田县', '遵化县', '迁安县']
示例2
输入:
鸡泽县
输出:
邯郸
参考答案
# (1)如果用户输入的是地级市名,以列表形式输出其下辖所有下辖区、县和
# 县级市名称。
# (2)如果用户输入的是市辖区、县或县级市名,则输出其上一级的地级市
# 名,若有的市辖区名在不同地级市中同时存在时,分行输出全部地级市名。
# 方法一
with open('hebei.txt','r',encoding='utf-8') as name:
hebei_lst = [x.strip().split(',') for x in name]
# print(hebei_lst ) # 可输出查看数据格式
name = input()
if name in hebei_lst[0]: # 若输入是地级市名
for ls in hebei_lst: # 遍历列表
if name == ls[0]: # 若当前子列表首元素与输入相同
print(ls[1:]) # 输出当前子列表首元素以后的所有元素
else: # 若输入的是市辖区名
for ls in hebei_lst: # 遍历列表
if name in ls: # 若输入在当前子列表中存在
print(ls[0]) # 输出当前子列表的首元素
# 方法二 ,函数
def read_txt(filename):
"""接收一个文件名为参数,读取文件中的数据到列表中,每行数据根据逗号切分为一个子列表,返回二维列表。"""
with open(filename,'r',encoding='utf-8') as name:
hebei_lst = [x.strip().split(',') for x in name]
return hebei_lst
def query_district(name, hebei_lst):
"""接收一个地区名为参数,如果用户输入的是地级市名,以列表形式返回其下辖所有下辖区、县和县级市名称。
如果用户输入的是市辖区、县或县级市名,则返回其上一级的地级市名,若有的市辖区名在不同地级市中同时存在时,
分行返回全部地级市名。
"""
if name in hebei_lst[0]: # 若输入是地级市名
for ls in hebei_lst: # 遍历列表
if name == ls[0]: # 若当前子列表首元素与输入相同
print(ls[1:]) # 输出当前子列表首元素以后的所有元素
else: # 若输入的是市辖区名
for ls in hebei_lst: # 遍历列表
if name in ls: # 若输入在当前子列表中存在
print(ls[0]) # 输出当前子列表的首元素
if __name__ == '__main__': # 使前面定义的函数可以被其他模块调用
district_name = input()
file = 'hebei.txt'
ls_of_city = read_txt(file)
query_district(district_name, ls_of_city)
# 方法三
with open('hebei.txt','r',encoding='utf-8') as f:
hebei_lst = [x.strip().split(',') for x in f] # 读取文件中的数据到列表,去掉行末换行符转为列表
name = input() # 输入地市名
[print(line[1:]) for line in hebei_lst if name in hebei_lst[0] and name == line[0]] # 若输入是地级市名
[print(line[0]) for line in hebei_lst if name not in hebei_lst[0] and name in line[1:]] # 若输入的是市辖区名