02-三级菜单

#Author:hejianping
#2017-04-21
import menu
import sys
first_menu_index = []
second_menu_index = []
third_menu_index = []

# 创建一级菜单索引列表
#使用enumerate函数遍历menu_dict中的一级目录元素并显示数据索引号,即创建一级餐单索引:
first_menu_index = [(index,key) for index,key in enumerate(menu.menu_dict)]

# 在first_menu_index列表末尾插入(索引号,退出餐单),因为从0算起所以新加的索引号等于len(first_menu_index):
first_menu_index.append((int(len(first_menu_index)),'退出'))

while True:
print('--------------------------------')
print('欢迎查看本店的餐单目录:')
print('--------------------------------')
for first in first_menu_index: # 打印出一级餐单目录
for n in first:
print(n,end="")
print("") # 打印空行


get_first_menu_num = input("请选择一级餐单对应的索引号:")
if not get_first_menu_num.isdigit(): #判断输入格式是否无效
print("请输入餐单前的数字索引号查看餐单或者退出!")
continue
elif int(get_first_menu_num) >= len(first_menu_index): #判断输入索引是否存在
print("您输入的索引号数字太大,请重新输入!")
continue
elif int(get_first_menu_num) == len(first_menu_index) - 1: #len(first_menu)长度为4,及输入3就退出并显示退出信息:
print("欢迎下次光临,再见!")
break

else:
choose_first_menu_name = first_menu_index[int(get_first_menu_num)][1] #获取已经选择的一级餐单名字
#依据一级餐单名确立其下二级餐单名字及对应的索引号:
second_menu_index = [(index,key) for index,key in enumerate(menu.menu_dict[choose_first_menu_name])]
second_menu_index.append((len(second_menu_index),'返回')) # 在列表增加返回上一级餐单的选项
second_menu_index.append((len(second_menu_index), '退出')) # 在列表增加退出餐单的选项
while True:
print('--------------------------------')
print('欢迎查看二级餐单目录:')
print('--------------------------------')
for second in second_menu_index: # 打印出二级餐单目录
for n in second:
print(n, end="")
print("")

get_second_menu_num = input("请选择二级餐单对应的索引号:")
if not get_second_menu_num.isdigit():
print("请输入餐单前的数字索引号查看餐单或者退出!")
continue
elif int(get_second_menu_num) >= len(second_menu_index):
print("您输入的索引号数字太大,请重新输入!")
continue
elif int(get_second_menu_num) == len(second_menu_index) - 2: # 返回上级餐单目录:
print("返回到上一级的餐单目录!")
break
elif int(get_second_menu_num) == len(second_menu_index) - 1: # 退出餐单目录:
print("欢迎下次光临,再见!")
sys.exit()

else:
choose_second_menu_name = second_menu_index[int(get_second_menu_num)][1] #获取已经选择的二级餐单名字
# 依据二级餐单名确立其下三级餐单名字及对应的索引号:
third_menu_index = [(index, key) for index, key in enumerate(menu.menu_dict[choose_first_menu_name][choose_second_menu_name])]
third_menu_index.append((len(third_menu_index),"返回上级目录"))
third_menu_index.append((len(third_menu_index), "退出餐单"))

while True:
print('--------------------------------')
print('欢迎查看三级餐单目录:')
print('--------------------------------')
for third in third_menu_index: # 打印出一级菜单
# print(first)
for n in third:
print(n, end="")
print("")

get_third_menu_num = input("请选择返回或退出:")
if not get_third_menu_num.isdigit():
print("请输入餐单前的数字索引号查看餐单或者退出!")
continue
elif int(get_third_menu_num) >= len(third_menu_index):
print("您输入的索引号数字太大,请重新输入!")
continue
elif int(get_third_menu_num) == len(third_menu_index) - 2: # 返回上级餐单目录:
print("返回到上一级的餐单目录!")
break
elif int(get_third_menu_num) == len(third_menu_index) - 1: # 退出餐单目录:
print("欢迎下次光临,再见!")
sys.exit()


其中import menu为menu.py这个菜单目录信息文件,代码为:

#Author:hejianping
#2017-04-21
menu_dict = {'中餐': {'蒸饭': ['冬菇滑鸡', '葱香排骨','萝卜牛腩'],
'家常小炒': ['凉瓜牛肉', '番茄炒蛋','青椒炒肉'],
'炖汤': ['瘦肉虫草花', '花旗参乌鸡','椰子炖老鸡']},
'西餐': {'西式饭': ['印尼炒饭', '牛柳炒蛋拌饭','猪仔扒番茄蛋饭'],
'西式扒': ['经典牛扒', '黑椒猪仔扒','欧陆什扒'],
'西式粉': ['墨西哥肉酱意粉', '西西里猪扒意粉','西西里鸡扒意粉']},
'饮品': {'饮料': ['加多宝', '果粒橙','可口可乐'],
'奶茶': ['鸳鸯奶茶', '神仙奶茶','珍珠奶茶'],
'糖水': ['绿豆沙', '莲子百合','红豆西米露']}}

其中三级菜单流程图为:
原文地址:https://www.cnblogs.com/hejianping/p/6745034.html