三级登录菜单高大上版,读取txt文档自动存取并实现增删改查返回退出功能

经过2天的修改终于完成了,这次程序完成后其实还可以完美的地方,先贴出来,以后再改正

难点是对字典进行修改并且存到文件中,由于多层嵌套已达4层,并且增删改查需要对键和值都进行修改,个别语句很长。待以后提高简化

choice2 = ''
layer = {}
layer_backup=[]
choice_backup = []
while True:
    with open('省级菜单','r',encoding='utf8') as map :
        for la in map:
            layer.update(eval(la.replace(' ','').strip()))
    num = 0
    for key_back in layer:
        num += 1
    while True :
        for key in layer:
            print(key,end='')
        choice = input('>>>:增加 a  删除 s 改 g ').strip()
        if choice in layer:
            choice2 = choice
            choice_backup.append(choice)
            layer_backup.append(layer)
            layer=layer[choice]
        elif choice == 'q':
            break
        elif choice == 'b':
            if layer_backup:
                layer = layer_backup.pop()
                choice_backup.pop()
        elif choice == 'a':
            choice = input('请输入需要增加的 ').strip()
            if len(layer_backup) == 0:
                with open ('省级菜单','a',encoding='utf8') as map_read :#,open ('省级菜单','w',encoding='utf8') as map_write
                    map_read.write("\n{'%s':{},}"%choice)
                break
            elif 0 < len(layer_backup) < 4:
                layer_backup[len(layer_backup)-1][choice2][choice] = {}
                with open('省级菜单', 'w', encoding='utf8') as map_write:
                    for maps_key,maps_value in layer_backup[0].items():
                        new_map = ("'%s':%s")%(str(maps_key),str(maps_value))
                        map_write.write('{%s}\n'%new_map.replace(' ','').strip())
            elif len(layer_backup) >= 4:
                print('无法增加')
        elif choice == 's':
            choice = input('请输入需要删除的 :').strip()
            if choice in layer:
                if len(layer_backup) == 0:
                    del layer[choice]
                    with open('省级菜单', 'w', encoding='utf8') as map_write:
                        for maps_key, maps_value in layer.items():
                            new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                            map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
                    break
                elif  0 < len(layer_backup) <=4:
                    if len(layer_backup) == 1:
                        del [layer_backup[0][choice_backup[0]][choice]]
                    elif len(layer_backup) == 2:
                        del [layer_backup[0][choice_backup[0]][choice_backup[1]][choice]]
                    elif len(layer_backup) == 3:
                        del [layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice]]
                    elif len(layer_backup) == 4:
                        del [layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice_backup[3]][choice]]
                    with open('省级菜单', 'w', encoding='utf8') as map_write:
                        for maps_key, maps_value in layer_backup[0].items():
                            new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                            map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
                # elif len(layer_backup) ==1:
                #     del [layer_backup[0][choice_backup[0]][choice]]
                #     with open('省级菜单', 'w', encoding='utf8') as map_write:
                #         for maps_key, maps_value in layer_backup[0].items():
                #             new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                #             map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
                # elif len(layer_backup) ==2:
                #     del [layer_backup[0][choice_backup[0]][choice_backup[1]][choice]]
                #     with open('省级菜单', 'w', encoding='utf8') as map_write:
                #         for maps_key, maps_value in layer_backup[0].items():
                #             new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                #             map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
                # elif len(layer_backup) ==3:
                #     del [layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice]]
                #     with open('省级菜单', 'w', encoding='utf8') as map_write:
                #         for maps_key, maps_value in layer_backup[0].items():
                #             new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                #             map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
                # elif len(layer_backup) ==4:
                #     del [layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice_backup[3]][choice]]
                #     with open('省级菜单', 'w', encoding='utf8') as map_write:
                #         for maps_key, maps_value in layer_backup[0].items():
                #             new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                #             map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
            else:print('请输入正确的!')
        elif choice == 'g':
            choice = input('请输入需要修改的 :').strip()
            if choice in layer:
                choice_new = input('请输入修改后的:')
                if len(layer_backup) == 0:
                    layer[choice_new] = layer.pop(choice)
                    with open('省级菜单', 'w', encoding='utf8') as map_write:
                        for maps_key, maps_value in layer.items():
                            new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                            map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
                    break
                elif 0 < len(layer_backup) <= 4:
                    if len(layer_backup) == 1:
                        layer_backup[0][choice_backup[0]][choice_new] = layer_backup[0][choice_backup[0]].pop(str(choice))
                    elif len(layer_backup) == 2:
                        layer_backup[0][choice_backup[0]][choice_backup[1]][choice_new] = layer_backup[0][choice_backup[0]][choice_backup[1]].pop(choice)
                    elif len(layer_backup) == 3:
                        layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice_new] = layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]].pop(choice)
                    elif len(layer_backup) == 4:
                        layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice_backup[3]][choice_new]= layer_backup[0][choice_backup[0]][choice_backup[1]][choice_backup[2]][choice_backup[3]].pop(choice)
                    with open('省级菜单', 'w', encoding='utf8') as map_write:
                        for maps_key, maps_value in layer_backup[0].items():
                            new_map = ("'%s':%s") % (str(maps_key), str(maps_value))
                            map_write.write('{%s}\n' % new_map.replace(' ', '').strip())
        else:
            print('请输入正确的!')
    if choice == 'q':
        break

 

posted on 2018-04-04 22:30  tonson9527  阅读(290)  评论(0)    收藏  举报