三级登录菜单高大上版,读取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
浙公网安备 33010602011771号