Multi-level menu

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import sys
#全局列表
dic_with_num = {}
dic_with_chinese = {}

#字典导入
def dic_import ():
    with open(‘dic.txt‘,‘r+‘) as file:
        file_list = file.readlines()
        dic= {}
        dic1 = {}
        dic2 = {}
        dic3 = {}
        i = 1
        j = 1
        k = 1
        for line in file_list :
            (key1,key2) = line.strip(‘\n‘).split()
            if key2 == ‘省‘:
                i = 1
                j = 1
                line1 = key1
                dic1[line1]=dic3
                dic3 = {}
                dic2[str(k)] = dic1
                dic1 = {}
                dic = dict(dic,**dic2)
                dic2 ={}
                k +=1

            elif key2 == ‘市‘:
                i = 1
                line2 = key1
                dic2[line2]=dic1
                dic1={}
                dic1[str(j)]=dic2
                dic2={}
                dic3=dict(dic3,**dic1)
                dic1={}
                j +=1

            else:
                line3 = key1
                dic1[str(i)] = line3
                i +=1
    return dic

#字典交换-当用户输入中文时,转换字典
def dic_exchange ():
    dic_with_chinese = {}
    dic = {}
    dic1 = {}
    for line1 in dic_with_num.keys():
        for line2 in dic_with_num[line1].keys():

            for line3 in dic_with_num[line1][line2].keys():
                for line4 in dic_with_num[line1][line2][line3].keys():

                    for line5,line6 in dic_with_num[line1][line2][line3][line4].items():
                        dic[line6] = line5
                    dic1[line3] = dic
                    dic = {}
                    dic[line4] = dic1
                    dic_with_chinese = dict(dic_with_chinese,**dic)
                    dic = {}
                    dic1 ={}
            dic[line1] = dic_with_chinese
            dic_with_chinese = {}
            dic_with_chinese[line2] = dic
            dic1 = dict(dic1,**dic_with_chinese)
            dic = {}
            dic_with_chinese = {}
    return dic1

#初始化
dic_with_num = dic_import()
dic_with_chinese = dic_exchange()
while True:
    #省份显示
    for k in dic_with_num.keys():
        for i in dic_with_num[k].keys():
            print(k,i + ‘\t‘, end= ‘‘)
            if  int(k)%4 ==0:
                print(‘\n‘)
    #询问用户需要查询的省份,可输入中文
    province = input(‘\n请输入需要查询的省份\n‘).strip()

    #城市显示

    #用户输入为序号时

    if province.isdigit():
        if province not in dic_with_num.keys():
            print(‘选项不存在\n‘)
            continue
        else:
            province_chinese = list(dic_with_num[province].keys())[0] #获取序号对应的省份中文名
            for k in dic_with_num[province][province_chinese].keys():
                for i in dic_with_num[province][province_chinese][k].keys():
                    print(k,i + ‘\t‘ ,end = ‘‘)
                    if int(k) % 4 == 0:
                        print(‘\n‘)
    #用户输入中文
    else:
        if province not in dic_with_chinese.keys():
            print(‘选项不存在\n‘)
            continue
        else:
            province_chinese = list(dic_with_chinese[province].keys())[0] #获取省份对应的序号
            for k in dic_with_chinese[province][province_chinese].keys():
                for i in dic_with_chinese[province][province_chinese][k].keys():
                    print(i,k + ‘\t‘,end=‘‘)
                    if int(i) % 4 == 0:
                        print(‘\n‘)

    #询问用户需要查询的城市,可输入中文
    while True:
        city = input(‘请输入需要查询的城市\n‘)
        #用户输入为序号时
        if city.isdigit():
            if city not in dic_with_num[province][province_chinese].keys():
                print(‘选项不存在\n‘)
                continue
            else:
                city_chinese = list(dic_with_num[province][province_chinese][city].keys())[0]#获取序号对应的城市中文名
                for k ,v in dic_with_num[province][province_chinese][city][city_chinese].items():
                    print(k,v + ‘\t‘,end=‘‘)
                    if int(k) % 4 == 0:
                        print(‘\n‘)
                choice = input(‘\n可输入q返回上一层菜单\n输入m返回主菜单\n输入其他则退出该系统‘)
                if choice == ‘q‘:
                    province_chinese = list(dic_with_num[province].keys())[0]  # 获取序号对应的省份中文名
                    for k in dic_with_num[province][province_chinese].keys():
                        for i in dic_with_num[province][province_chinese][k].keys():
                            print(k, i + ‘\t‘ ,end=‘‘)
                            if int(k) % 4 == 0:
                                print(‘\n‘)
                    continue
                elif choice == ‘m‘:
                    break
                else:
                    sys.exit()

        #用户输入q时 返回省份显示菜单
        elif city == ‘q‘:
            break
        #用户输入为中文时
        else:
            if city not in dic_with_chinese[province][province_chinese].keys():
                print(‘选项不存在\n‘)
                continue
            else:
                city_chinese = list(dic_with_chinese[province][province_chinese][city].keys())[0]  # 获取序号对应的城市中文名
                for k, v in dic_with_chinese[province][province_chinese][city][city_chinese].items():
                    print(v, k)
                choice = input(‘‘‘
                =======================
                **可输入q返回上一层菜单**
                  >输入m返回主菜单<
                >输入其他则退出该系统<
                =======================
                ‘‘‘)
                if choice == ‘q‘:
                    province_chinese = list(dic_with_chinese[province].keys())[0]  # 获取省份对应的序号
                    for k in dic_with_chinese[province][province_chinese].keys():
                        for i in dic_with_chinese[province][province_chinese][k].keys():
                            print(i, k)
                    continue
                elif choice == ‘m‘:
                    break
                else:
                    sys.exit()
时间: 2024-08-05 06:56:16

Multi-level menu的相关文章

Bootstrap Metronic 学习记录(二)菜单栏

1.简介 1)  .环境配置 2)  .提取页面 2).动态生成菜单(无限级别树) 2.系统环境配置 项目需要程序数据支撑,这里选择MVC5.0+EF6.0[SQLSERVER](不对MVC架构和SQLServer做出解读) 运行环境:VS2013+MVC5.0+EF6.1+SQLServer2012 解决方案名称:AppSolution 项目名称:App.Web(UI层)与App.Models(数据访问层) -直接访问模式 提取theme下的所有文件到MVC的Content,提取admin的i

一个炫酷的导航菜单,模仿别人写的

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=

SAP事务码 一

SE80 -- edit source code. SE24 -- class create or display. SFP -- created and maintained independently of Web Dynpro applications using the Form Builder. SFW1 SFW2 SFW3 -- 与增强有关 SY-SUBRC 返 回代码值( 0,如果操 作成功)   SY-UNAME 用 户的登录名   SY-DATUM 当 前日期   SY-UZE

SELinux原理和使用

本文结构:SELinux介绍.安全上下文-->模式.策略设置和使用-->bool值作用.查询修改-->semanager工具安全上下文的使用 Security Enhanced Linux 安全强化linux      是一个嵌到内核中的模块,用于针对进程对系统资源的访问加强安全防护,以网络服务来说,服务的主体是进程,SELinx便可以控制网络服务是否能访问系统资源 为什么需要SELinux 传统的访问文件系统的方式是自主访问控制(Discretionary Access Control

基于jQuery 常用WEB控件收集

Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件. Horizontal accordion: jQuery jQuery-Horizontal Accordion 具有XBOX360 blade界面风格的水平方向Accordion. jQuery-Horizontal Accordion AutoComplete-JQuery jQuery插件易于集成到现在的表单中(Form). AutoComplete-JQuery Facebook

10+ 最流行的 jQuery Tree 菜单插件

jstree – jQuery Tree Plugin With HTML & JSON Data jstree is a lightweight and flexible jQuery plugin to create tree menu from HTML & JSON data sources sources.This jQuery Plugin Support AJAX & async callback loading.It is absolutely free, open

Odoo9.0模块开发全流程

构建Odoo模块 模块组成 业务对象 业务对象声明为Python类, 由Odoo自动载入. 数据文件 XML或CSV文件格式, 在其中声明了元数据(视图或工作流).配置数据(模块参数).演示数据等. Web控制器 处理Web浏览器发来的requests. 静态web数据 Web用到的图像, CSS或JavaScript文件. 模块结构 一个Odoo模块也是一个Python模块, 存放在一个目录中, 包含一个__init__.py文件, 用于导入其他Python模块. from . import

SHINE OPENCART 自适应 多用途主题模板 ABC-0021

SHINE OPENCART 自适应 多用途主题模板 ABC-0021 Shine is a responsive multipurpose OpenCart theme which is fully customizable and suitable for any kind of OpenCart store on any device. This responsive theme is a general purpose responsive theme which can be high

KickStart+nfs+dhcp+tftp无人值守批量安装CentOS6.5(或CentOS7)

一.基本原理简介 PXE 是一种系统引导的方式.进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC Network Information Center),即网卡中必须要有 PXE Client. PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动.协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出

RHEL6.2详细安装greenplum-db-4.3.5.4(part one)

因公司原有的Oracle数据库已经无法满足当前的实际应用,现需要跟换数据库系统,综合考虑选择greenplum分布式数据库.在安装部署中遇到各种问题,都一一解决,如有错误的地方,请指正,谢谢! 物理环境 硬件环境: 3台台式机 1台6G内存的作为master,操作系统为RHEL6.2,最小化安装 2台4G联想电脑安装虚拟机vmwareworkstation11,其上各安装两台RHEL6.2,最小化安装 分别的IP是 master:168.168.168.16 台式机的windows的IP为 se