#!/usr/bin/evn python
# -*- coding:utf-8 -*-
# Author:Li ShiLin
# 实现三级菜单
# 创建一个三级字典供使用 模拟数据库
# 需要注意的是再写代码的时候Python一定要注意格式 每一层的代码 该如何对其 就要对其 不然报错的话很难找到问题的所在
# python语言不想java有一个大括号抱起来 乱一点无所谓 在python中哪怕有一个地方格式不正确 都无法正常的运行 会报错
# 格式不对的话 一般报错 :IndentationError: expected an indented block
date = {
'北京':{
"平昌":{
"沙河":{"腾讯","华为","小米"},
"天同怨":{"百度","链家地产","我爱我家地产"}
},
"朝阳":{
"望京":{"奔驰","宝马","福特","长安"},
"国贸":{"CICC","ATCC","HP"},
"东直门":{"华硕","阿里巴巴","京东"}
}
},
'四川':{
"成都":{
"青羊":{"八宝街","春熙路","阳公桥"},
"武侯":{"武侯祠","外双楠","火车北站"},
"双流":{"蛟龙港","海滨城","双流万达广场"},
"郫县":{"红光镇","富士康","联想"}
},
"绵阳":{
"万顺":{"草上飞"},
"城区":{"ODDL","DBCC"}
},
"西昌":{
"南城":{"长途汽车站","东方元"},
"北城":{"琼海","火车站","工业区"}
}
},
'云南':{
"昆明":{
"城南":{"大学城","双都飞"},
"城北":{"工业区","农业区"}
},
"西双版纳":{
"南城":{"旅游区","度假区","休闲区"},
"西城":{"娱乐区","双阳区","不知道"}
},
"昭通":{
"南城":{"山顶","无极"},
"东城":{"火车站","汽车站"}
}
},
'广东':{
"珠海":{
"北城":{"商业","旅游","工作"},
"西城":{"富家","双极"}
},
"东莞":{
"城西":{"吃","喝","玩","OPP"}
},
"佛山":{
"北城":{"美的","OPPO","VIVO","HUAWEI"},
"东城":{"格力","长虹","小天使"}
}
}
}
exit_flag = False
# while循环 可以多次返回
while True :
# for循环遍历字典中的数据
for i in date :
print(i)
# 用户输入选择进入
choice = input("选择进入>>>>>")
if choice in date :
while not exit_flag :
#输入选择后 用for循环再次遍历字典的下一层 再次让用户选择输入 再进入下一层 一次循环进入下一层
for two in date[choice] :
print("\t",two)
choice2 = input("选择进入2>>>>>")
if choice2 in date[choice] :
while not exit_flag :
for therr in date[choice][choice2]:
print("\t\t",therr)
# 进入字典的第三层
choice3 = input("选择进入3>>>>")
if choice3 in date[choice][choice2]:
for frou in date[choice][choice2][choice3]:
print("\t\t",frou)
# 这里是最后一层 让用户选择输入 输入B 就返回上一级
choice4 = input("这里是最后一层,输入B/b返回")
# 判断用户输入的是什么
if choice4 == "B" or choice4 == "b":
pass
# 如果输入Q就退出 下面的内容都是一样的道理
elif choice4 == "q" or choice4 == "Q":
exit_flag = True
if choice3 == "b" or choice3 == "B":
break
elif choice3 == "q" or choice3 == "Q":
exit_flag = True
if choice2 == "b" or choice2 == "B":
break
elif choice2 == "q" or choice2 == "Q":
exit_flag = True
最后的运行结果是这样的