• 三级菜单(高大上版)


    #_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

  • 相关阅读:
    Apache Struts 2.3.12 GA?
    emacs配置《转》
    vim配置
    vim插件
    git使用
    ubuntu常用设置
    Eclipse如何关联已经clone的Git项目
    变量名、对象引用(指针)与堆栈
    Web项目转换为groovy项目的步骤
    日志 20071208(SvcUtil.exe,高并发网站架构)
  • 原文地址:https://www.cnblogs.com/startl/p/11807377.html
Copyright © 2020-2023  润新知