您的位置:首页 > 编程语言 > Python开发

python实现三级菜单

2017-10-25 00:00 288 查看
1. 文件不能直接存字典、列表等数据 。 2. 为什么JSON可以存,因为JSON就是字符串。 3. 为什么字符串可以存文件,其实字符串还会被转成bytes,最终被存入文件或者被网络传输。

程序: 三级菜单

要求:

打印省、市、县三级菜单

省、市、县等信息存储在文件中

可返回上一级

可随时退出程序

因为字典、列表不能直接保存在文件。先用储存省市县信息的字典转换成JSON,保存在文件中,

import json
menu={
'陕西':{
'西安':{
'小寨':"购物中心",
'北大街':"钟鼓楼",
'大雁塔':"喷泉水舞"

},
'咸阳':{
"机场":"乘飞机",
"咸阳湖":"可划船",
"乾陵":"武则天"
},
'临潼':{
"兵马俑":"秦始皇",
"华清池":"杨贵妃",
"骊山":"烽火戏诸侯"
},
},
'广东':{
'广州':{
'天河':{},
'番禺':{},
'白云':{}
},
'深圳':{
'南山':{},
'福田':{},
'罗湖':{}
}
}

}
menu_=json.dumps(menu)
f=open('menu.txt','w',encoding='utf-8')
f.write(menu_)
f.close()

1.读取存在文件中的信息,用eval()函数转换成字典,创建一个值为整个字典的列表layers,创建一个变量carte,将字典的值赋给他。

2.用两层循环嵌套,外层循环是死循环,通过break推出。for循环遍历整个carte的key,得到省名字的列表,输出该列表,让用户输入。

3.判断输入choice,choic为q,break退出循环;choice不在字典a内,报错,continue;choic在carte中,将当前carte追加到layers列表中,将choice对应的下级字典赋值给carte,遍历carte,得到choice对应的菜单;choice为r,将layers的最后一个元素赋值给a,b删除最后一个元素,这时遍历carte,就得到上一级菜单,以此实现返回上级菜单。

import json
f=open('menu.txt',encoding="utf-8")
menu=eval(f.read())
f.close()
carte=menu
layers=[menu]
while True:
if type(carte)is not  str:
for key in carte:
print(key)
else:print(carte)
choice=input("请输入你想查看的选项(返回上一层请输r,退出请输入q):\n").strip()
if choice =="r":
carte=layers[-1]
layers.pop()

elif choice=="q":break
elif choice not  in carte:
print("输入错误,请输入正确的选项")
continue
else:
layers.append(carte)
carte=carte[choice]

补上流程图一张,欢迎各位前辈指点。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python 字典 三级菜单