Python语言之洗礼灵魂,多级目录菜单之地址管理系统升级版
小标 2018-08-09 来源 : 阅读 979 评论 0

摘要:本文主要向大家介绍了Python语言之洗礼灵魂,多级目录菜单之地址管理系统升级版,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言之洗礼灵魂,多级目录菜单之地址管理系统升级版,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

要求:
1.在上一篇的地址管理系统的基础上做升级改动
2.添加增删改的功能
3.尽量的贴近生活常识中的地址管理
 
 
分析:
需求不用多说了,干就完了
 
相关文件源码地址:github
 
 
 
这次由于要有增删改的操作,所以需要一个数据库文件存储数据,china_map.txt

?1{'吉林': {'长春': {'朝阳区': {}, '南关区': {}, '宽城区': {}, '二道区': {}, '绿园区': {}, '双阳区': {}, '德惠市': {}, '九台市': {}, '榆树市': {}, '农安县': {}}, '吉林市': {'船营区': {}, '昌邑区': {}, '龙潭区': {}, '丰满区': {}, '蛟河市': {}, '桦甸市': {}, '舒兰市': {}, '磐石市': {}, '永吉县': {}}, '四平': {'铁西区': {}, '铁东区': {}, '公主岭市': {}, '双辽市': {}, '梨树县': {}, '伊通满族自治县': {}}, '辽源': {'龙山区': {}, '西安区': {}, '东丰县': {}, '东辽县': {}}, '通化': {'东昌区': {}, '二道江区': {}, '梅河口市': {}, '集安市': {}, '通化县': {}, '辉南县': {}, '柳河县': {}}, '白山': {'浑江区': {}, '江源区': {}, '临江市': {}, '抚松县': {}, '靖宇县': {}, '长白朝鲜族自治县': {}}, '松原': {'宁江区': {}, '长岭县': {}, '乾安县': {}, '扶余县': {}, '前郭尔罗斯蒙古族自治县': {}}, '白城': {'洮北区': {}, '洮南市': {}, '大安市': {}, '镇赉县': {}, '通榆县': {}}, '延边州': {'延吉市': {}, '图们市': {}, '敦化市': {}, '和龙市': {}, '珲春市': {}, '龙井市': {}, '汪清县': {}, '安图县': {}}, '长白山管委会': {}}, '四川': {'成都': {'锦江区': {}, '青羊区': {}, '金牛区': {}, '武侯区': {}, '成华区': {}, '青白江区': {}, '龙泉驿区': {}, '新都区': {}, '温江区': {}, '金堂县': {}, '双流县': {}, '郫县': {}, '大邑县': {}, '蒲江县': {}, '新津县': {}, '都江堰市': {}, '彭州市': {}, '崇州市': {}, '邛崃市': {}}, '自贡': {'自流井区': {}, '贡井区': {}, '大安区': {}, '滩区': {}, '荣县': {}, '富顺县': {}}, '攀枝花': {'东区': {}, '西区': {}, '仁和区': {}, '米易县': {}, '盐边县': {}}, '泸州': {'江阳区': {}, '龙马潭区': {}, '纳溪区': {}, '泸县': {}, '合江县': {}, '叙永县': {}, '古蔺县': {}}, '德阳': {'旌阳区': {}, '广汉市': {}, '什邡市': {}, '绵竹市': {}, '中江县': {}, '罗江县': {}}, '绵阳': {'涪城区': {}, '游仙区': {}, '梓潼县': {}, '三台县': {}, '盐亭县': {}, '安县': {}, '平武县': {}, '江油市': {}, '北川羌族自治县': {}}, '广元': {'利州区': {}, '昭化区': {}, '朝天区': {}, '旺苍县': {}, '青川县': {}, '剑阁县': {}, '苍溪县': {}}, '遂宁': {'船山区': {}, '安居区': {}, '射洪县': {}, '蓬溪县': {}, '大英县': {}}, '内江': {'市中区': {}, '东兴区': {}, '资中县': {}, '隆昌县': {}, '威远县': {}}, '乐山': {'市中区': {}, '沙湾区': {}, '五通桥区': {}, '金口河区': {}, '犍为县': {}, '井研县': {}, '夹江县': {}, '沐川县': {}, '峨眉山市': {}, '峨边彝族自治县': {}, '马边彝族自治县': {}}, '南充': {'顺庆区': {}, '高坪区': {}, '嘉陵区': {}, '西充县': {}, '南部县': {}, '蓬安县': {}, '营山县': {}, '仪陇县': {}, '阆中市': {}}, '眉山': {'东坡区': {}, '彭山区': {}, '仁寿县': {}, '丹棱县': {}, '青神县': {}, '洪雅县': {}}, '宜宾': {'翠屏区': {}, '南溪区': {}, '宜宾县': {}, '江安县': {}, '长宁县': {}, '高县': {}, '筠连县': {}, '珙县': {}, '兴文县': {}, '屏山县': {}}, '广安': {'广安区': {}, '前锋区': {}, '邻水县': {}, '武胜县': {}, '岳池县': {}, '华蓥市': {}}, '达州': {'通川区': {}, '达川区': {}, '宣汉县': {}, '开江县': {}, '大竹县': {}, '渠县': {}, '万源市': {}}, '雅安': {'雨城区': {}, '名山区': {}, '荥经县': {}, '汉源县': {}, '石棉县': {}, '天全县': {}, '芦山县': {}, '宝兴县': {}}, '巴中': {'巴州区': {}, '恩阳区': {}, '平昌县': {}, '通江县': {}, '南江县': {}}, '资阳': {'雁江区': {}, '安岳县': {}, '乐至县': {}, '简阳市': {}}, '阿坝藏族羌族自治州': {'马尔康县': {}, '金川县': {}, '小金县': {}, '阿坝县': {}, '若尔盖县': {}, '红原县': {}, '壤塘县': {}, '汶川县': {}, '理县': {}, '茂县': {}, '松潘县': {}, '九寨沟县': {}, '黑水县': {}}, '甘孜藏族自治州': {'康定县': {}, '泸定县': {}, '九龙县': {}, '道孚县': {}, '炉霍县': {}, '甘孜县': {}, '新龙县': {}, '德格县': {}, '白玉县': {}, '石渠县': {}, '色达县': {}, '理塘县': {}, '巴塘县': {}, '乡城县': {}, '稻城县': {}, '得荣县': {}}, '凉山彝族自治州': {'西昌市': {}, '德昌县': {}, '会理县': {}, '会东县': {}, '宁南县': {}, '普格县': {}, '布拖县': {}, '昭觉县': {}, '金阳县': {}, '雷波县': {}, '美姑县': {}, '甘洛县': {}, '越西县': {}, '喜德县': {}, '冕宁县': {}, '盐源县': {}, '木里藏族自治县': {}}}, '北京': {'': {}, '朝阳区': {'': {}}}}

 
 
然后就是主程序文件

?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#!usr/bin/env python#-*- coding:utf-8 -*- # author:yangva# datetime:2017/12/9 0009 13:16 f=open('chinamap.txt','r')china_map_dict = eval(f.read())f.close() current_leval = china_map_dict #实现动态循环parent_list = [] #把所有列表父级放进列表while True:    for key in current_leval:        print(key)    choice = input('>>>:').strip()    if len(choice) == 0:continue    if choice in current_leval:        temp = input('发现以上数据【%s】有错?你想修改或者删除【%s】吗?【yes/no】>>>:'%(choice,choice))        while True:            if temp == 'yes':                temp = input('您是修改还是删除?【revise/delete】>>>:')                if temp == 'revise':                    value = input('请输入您的正确值:')                    current_leval[value] = current_leval.pop(choice)                    print('已修改')                    break                elif temp == 'delete':                    current_leval.pop(choice)                    print('已删除',end='') #为了和后面的异常放在一行组合为一句                    break                else:                    print('输入有误!已自动进入下一级,需要修改请回退到上一级')                    break            elif temp == 'no':break            else:                print('输入有误!已自动进入下一级,需要修改请回退到上一级')                break        try:            parent_list.append(current_leval)            current_leval = current_leval[choice] #进入子级        except KeyError as reson:            print(reson)    elif choice == 'back':        if parent_list:            current_leval=parent_list.pop() #取出父级(上一级)    elif choice == 'quit':        print('程序已退出')        break    else:        while True:            temp = input('无选项【%s】,你想添加此项吗?【yes/no】>>>:'%choice)            if temp == 'yes':                value = input('请输入您为【%s】添加的数据(可以为空)>>>:'%choice).strip()                current_leval[choice] = {value:{}}                break            elif temp == 'no':break            else:                print('输入有误!!')                breakf=open('chinamap.txt','w')f.write(str(china_map_dict))f.close()

 
结果测试:
 

 
(图片只截取了部分,很简单,不全部展示了)
 
 
总结优化:
是的,我的每个项目都有总结优化,因为我觉得从来没有一个完美的程序,它总有可优化的地方,但是目前我们暂时不做得那么高大上,能拿到直接投入使用的那种,不是不可行,是因为目前是项目篇,所以尽量的从简单的入手,后期自然慢慢越来越完善,到时候你再回过头来,想怎么优化都可以

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程