学习Python的第一天时有一个“Python三级菜单”的作业,为了完成这个作业个人遇到一些问题,随笔记录。
# -*- coding:utf-8 -*-
# Autor: Li Rong Yang
# 所有操作使用此字典完成
zone = { '山东' : { '青岛' : ['四方','黄岛','崂山','李沧','城阳'], '济南' : ['历城','槐荫','高新','长青','章丘'], '烟台' : ['龙口','莱山','牟平','蓬莱','招远'] }, '江苏' : { '苏州' : ['沧浪','相城','平江','吴中','昆山'], '南京' : ['白下','秦淮','浦口','栖霞','江宁'], '无锡' : ['崇安','南长','北塘','锡山','江阴'] }, '浙江' : { '杭州' : ['西湖','江干','下城','上城','滨江'], '宁波' : ['海曙','江东','江北','镇海','余姚'], '温州' : ['鹿城','龙湾','乐清','瑞安','永嘉'] }, '安徽' : { '合肥' : ['蜀山','庐阳','包河','经开','新站'], '芜湖' : ['镜湖','鸠江','无为','三山','南陵'], '蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇'] }, '广东' : { '深圳' : ['罗湖','福田','南山','宝安','布吉'], '广州' : ['天河','珠海','越秀','白云','黄埔'], '东莞' : ['莞城','长安','虎门','万江','大朗'] } }
以上字典分为三级分别是“省”、“市”、“县”
打印一级菜单“省”
print(zone.keys())
运行结果如下,打印后显示了所有的省级城市
但是这看起来并不好看且无法用于循环,所以我们把它转换为list类型
city_id = list(zone.keys()) print(city_id)
运行结果如下
根据一级菜单打印二级菜单
print(zone['山东'])
运行结果如下
根据以上信息显示,明显不光我们需要的二级菜单还有三级菜单“县”,所以要使用.keys()函数
print(zone['山东'].keys()) City_Shi = list(zone['山东'].keys()) print(City_Shi)
运行结果如下
打印三级菜单
print(zone['山东']['青岛'])
运行结果如下
到此列表的一、二、三级打印方法就完了,在使用简单的while循环和if判断最终“Python三级菜单”代码如下
################################################ # Task Name: 三级菜单 # # Description:打印省、市、县三级菜单 # # 可随时返回上一级 # # 可随时退出程序 # #----------------------------------------------# # Author:Li Rong Yang # ################################################ zone = { '山东' : { '青岛' : ['四方','黄岛','崂山','李沧','城阳'], '济南' : ['历城','槐荫','高新','长青','章丘'], '烟台' : ['龙口','莱山','牟平','蓬莱','招远'] }, '江苏' : { '苏州' : ['沧浪','相城','平江','吴中','昆山'], '南京' : ['白下','秦淮','浦口','栖霞','江宁'], '无锡' : ['崇安','南长','北塘','锡山','江阴'] }, '浙江' : { '杭州' : ['西湖','江干','下城','上城','滨江'], '宁波' : ['海曙','江东','江北','镇海','余姚'], '温州' : ['鹿城','龙湾','乐清','瑞安','永嘉'] }, '安徽' : { '合肥' : ['蜀山','庐阳','包河','经开','新站'], '芜湖' : ['镜湖','鸠江','无为','三山','南陵'], '蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇'] }, '广东' : { '深圳' : ['罗湖','福田','南山','宝安','布吉'], '广州' : ['天河','珠海','越秀','白云','黄埔'], '东莞' : ['莞城','长安','虎门','万江','大朗'] } } while True: for i in zone: print(i) while True: City_Shi = input("请输入要查看的省级城市,(q)退出(b)返回上一层:") if City_Shi in zone: for Shi in zone[City_Shi]: print(Shi) while True: City_Xian = input("请输入要查看的市级城市,(q)退出(b)返回上一层:") if City_Xian in zone[City_Shi]: for Xian in zone[City_Shi][City_Xian]: print(Xian) user_select = input("输入(q)退出(b)返回上一层:") if user_select == 'q': exit() elif user_select == 'b': break elif user_select != 'q' and user_select != 'b': print("输入有误请重新输入:") if City_Xian == 'q': exit() elif City_Xian == 'b': break elif City_Shi == "q": print("程序已退出".center(50,'-')) exit() elif City_Shi == 'b': break