python——县区查询

县区查询

类型:文件

描述

附件中的文本文件里包含河北省的地区信息。

文件第一行为省名和地级市名,其他每行的第一个地名为地级市名,后面地名为该地区的下辖区、县和县级市的名称,如下所示:

河北,石家庄,唐山,秦皇岛,邯郸,邢台,保定,张家口,承德,沧州,廊坊,衡水
石家庄,长安区,桥东区,......,藁城市,鹿泉市
唐山,路南区,路北区,......,遵化县,迁安县
秦皇岛,海港区,三海关区......,抚宁县,卢龙县
邯郸,邯山区,丛台区,......,曲周县,武安县
邢台,桥东区,桥西区,......,南宫市,沙河西
保定,新市区,北市区,......,安国市,高碑店市
张家口,桥东区,桥西区,......,赤城县,崇礼县
承德,双桥区,双滦区,......,围场蒙古做自治县
沧州,新华区,运河区,......,河间市,黄骅市
廊坊,安次区,广阳区,......,三河市,霸州市
衡水,桃城区,枣强县,......,深州市,冀州县

下面代码可以将该文件的内容读到列表中,运行这段代码,查看输出的列表内容,完成要求的操作:

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

输入:

鸡泽县

输出:

邯郸

参考答案

# (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:]]  # 若输入的是市辖区名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_62488776

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值