zoukankan      html  css  js  c++  java
  • 三级菜单(高大上版)

    #_author:Administrator
    #date:2019/11/06
    #三级菜单(高大上版)
    #作业要求
    #1.展示省市县(数据存在文件中)
    #2.对文件实现增删改
    with open('menutxt','r',encoding='utf8') as f_read:
    str_menu=eval(f_read.read().strip())
    print(str_menu)
    current_menu=str_menu
    parent_menu=[]#保存所有父级,最后一个元素永远是父级
    flag=True
    while flag:
    #print(parent_menu)
    for key in current_menu:#1
    print(key)####
    choose=input('请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]'.strip())
    if len(choose) == 0: continue
    if choose in current_menu:
    parent_menu.append(current_menu)#在进入下一层之前,把当前层(也就是下一层的父级)追加到列表中,
    #下一次循环,当用户选择b的时候,就可以直接取列表的最后一个值出来
    current_menu=current_menu[choose]#2#进入子层
    if not current_menu:#3
    print('已经是最后一层了')#4
    elif choose=='add':
    add_ele=input('请输入你要添加的省份'.strip())
    if add_ele in current_menu:
    print('您添加的省份存在')
    else:
    current_menu[add_ele]={}#
    elif choose=='mod':
    mod_ele=input('请输入你要修改的省份'.strip())
    if mod_ele in current_menu:
    new_ele=input('请输入新省份:')
    current_menu[new_ele]=current_menu[mod_ele]#(!!!)
    current_menu.pop(mod_ele) #修改新省份要将原来的省份删除
    else:
    print('您修改的省份不存在')
    elif choose=='rem':
    rem_ele=input('请输入你要删除的省份:'.strip())
    if rem_ele in current_menu:
    current_menu.pop(rem_ele)#
    else:
    print('您删除的省份不存在')
    elif choose=='b':
    #如果列表记录中没有内容,则证明在第一层,不需要返回
    if parent_menu:
    current_menu=parent_menu.pop()#取出列表的最后一个值,因为它就是当前层父级
    elif choose=='q':
    flag=False
    else:
    print('您输入有误')
    with open('update2','w',encoding='utf8')as f_write:
    dic_menu=str(current_menu).strip()
    f_write.write(dic_menu)#
    Output:

    {'陕西省': {'西安市': {'长安县': {}, '户县': {}}, '渭南市': {'富平县': {}, '华县': {}, '蒲城县': {}}}, '湖南省': {'长沙市': {'文艺县': {}, '金盆县': {}, '岳麓县': {}, '会春县': {}}, '衡阳市': {'衡南县': {}, '衡山县': {}, '衡东县': {}, '祁东': {}}}}
    陕西省
    湖南省
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]陕西省
    西安市
    渭南市
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]西安市
    长安县
    户县
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]长安县
    已经是最后一层了
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]b
    长安县
    户县
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]b
    西安市
    渭南市
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]b
    陕西省
    湖南省
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]mod
    请输入你要修改的省份湖南省
    请输入新省份:江苏省
    陕西省
    江苏省
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]江苏省
    长沙市
    衡阳市
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]rem
    请输入你要删除的省份:长沙市
    衡阳市
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]add
    请输入你要添加的省份加油
    衡阳市
    加油
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]加油
    已经是最后一层了
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]b
    衡阳市
    加油
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]b
    陕西省
    江苏省
    请选择:添加[add],修改[mod],删除[rem],返回上一级[b],退出[q]q

  • 相关阅读:
    Windows安装Docker Toolbox 和docker-machine 常用操作
    VirtualBox6.1下载及安装 创建虚拟机
    Linux CentOS7 Docker-machine的安装
    CentOS Docker 安装
    gcc、g++
    找不到所需要的ndbm.h头文件
    最长公共字串(LCS)最长连续公共字串(LCCS)
    C# 爬虫批量下载文件
    '"VCVARS32.BAT"' 不是内部或外部命令,也不是可运行的程序
    jsoncpp 生成 json 字符串
  • 原文地址:https://www.cnblogs.com/startl/p/11807377.html
Copyright © 2011-2022 走看看