学习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