zoukankan      html  css  js  c++  java
  • 城市3级列表最终版

    #!/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()
  • 相关阅读:
    数据类型装换
    变量及数据类型
    27 网络通信协议 udp tcp
    26 socket简单操作
    26 socket简单操作
    14 内置函数 递归 二分法查找
    15 装饰器 开闭原则 代参装饰器 多个装饰器同一函数应用
    12 生成器和生成器函数以及各种推导式
    13 内置函数 匿名函数 eval,exec,compile
    10 函数进阶 动态传参 作用域和名称空间 函数的嵌套 全局变量
  • 原文地址:https://www.cnblogs.com/godspeed034/p/7245624.html
Copyright © 2011-2022 走看看