城市3级列表最终版

本文介绍了一个基于Python实现的用户交互程序,该程序能够显示省市县三级联动的选择器。当用户输入省份名称如“河北”时,程序将打印出该省下的所有市;若继续输入市的名称,则会显示该市下的所有县。文章提供了完整的代码示例,包括如何定义省份及其下属区域的字典,以及如何通过用户输入来导航这些层级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# by wk

'''
用户交互,显示省市县三级联动的选择
要求:用户输入河北,则打印河北省下的市,用户输入市,则显示该河北省的这个市下的县
dic = {
    "河北": {
        "石家庄": ["鹿泉", "藁城", "元氏"],
        "邯郸": ["永年", "涉县", "磁县"],
    }
    "河南": {
        ...
    }
    "山西": {
        ...
    }
'''


# import sys

# 取出省市列表
def provinces_dict():
    my_city_dict = {
        "河北": {
            "石家庄": ["鹿泉", "藁城", "元氏"],
            "邯郸": ["永年", "涉县", "磁县"],
            "唐山": ["玉田县", "乐亭县", "迁西县"],
        },
        "江苏": {
            "南京": ["溧水", "高淳", "玄武"],
            "苏州": ["平江", "虎丘", "虞山"],
            "无锡": ["崇安", "南长", "北塘"],
        },
        "山西": {
            "太原": ["清徐县", "阳曲县", "娄烦县"],
            "大同": ["天镇县", "阳高县", "广灵县"],
            "朔州": ["怀仁", "右玉", "山阴"],
        }
    }
    return my_city_dict


# 省列表并输入被选择的省
def choose_provinces(provinces_list):
    for provinces in provinces_list:
        print(provinces)
    my_provinces = input('请输入省的名称: ')
    return my_provinces


# 传入省字典,展示城市列表并输入被选择的城市
def choose_city(my_city, my_provinces):
    for area in my_city[my_provinces]:
        print(area)
    my_area = input('请输入城市的名称,返回上一级请按(B or b): ')
    return my_area


# 传入省,市字典,展示县
def choose_location(my_city, choose_city, choose_area):
    for mylocation in my_city[choose_city][choose_area]:
        print(mylocation)


def main():
    flag = True
    while flag:
        flag_provinces = True
        my_provinces_dict = provinces_dict()
        while flag_provinces:
            flag_city = True
            my_provinces = choose_provinces(my_provinces_dict)
            if my_provinces not in my_provinces_dict:
                print('您输入的信息有误,请重新输入!')  # 如果输入的数据不在菜单里,需要重新输入
                flag_city = False
            while flag_city:
                flag_location = True
                my_city = choose_city(my_provinces_dict, my_provinces)
                if my_city == 'B' or my_city == 'b':  # 判断如果选择了B或者b返回上级菜单
                    flag_location = False  # 退出本层循环
                    flag_city = False  # 退出上层层循环
                elif my_city not in my_provinces_dict[my_provinces]:
                    print('您输入的信息有误,请重新输入!')  # 如果输入的数据不在菜单里,需要重新输入
                    flag_location = False  # 退出本层循环
                while flag_location:
                    choose_location(my_provinces_dict, my_provinces, my_city)
                    # if my_location not in my_provinces_dict[my_provinces][my_city]:
                    #     flag_location = True
                    flag_location = False  # 退出
                    flag_city = False
                    flag_provinces = False
                    flag = False


if __name__ == '__main__':
    main()

 

转载于:https://www.cnblogs.com/godspeed034/p/7245624.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值