python day1 之三级菜单的正确姿势

看了几个同学有关三级菜单的实现,都是通过一级一级输出,是较为过程的实现。另外如果菜单(树形结构)更多级这样处理起来就比较麻烦了。

可以使用python强大的列表和字典,实现的更优美或简洁一些:

python day1 之三级菜单的正确姿势

注:复制代码需谨慎,如有错误自行修正

#!/usr/bin/env python
#Author:windtalker_cs
menus = {'root':['shandong','jiangsu'],
'shandong':['sc1','sc2','sc3'],
'jiangsu':['jc1','jc2'],
'sc1':['sc1t1','sc1t2'],
'sc2':['sc2t1','sc2t2','sc2t3'],
'sc3':['sc3t1'],
'jc1':['jc1t1','jc1t2'],
'jc2':['jc2t1']} #定义出合理的树形结构,决定了处理的效率和扩展性,可以定义N级菜单
print('-'*15,'多级菜单展示样例程序','-'*15,
'''
正确输入:
1)菜单名
2)q:退出
3)b:回退到上级菜单的列表
''',
'-' * 15, '***************', '-' * 15) menu_path = [menus['root']]#记录菜单访问的路径,并初始化第一级菜单
input_path=[]#预留功能扩展用,变更记录菜单选择项 print('''
第1级菜单:
{_list}
'''.format(_list = menu_path[0])) while True:
input_key = input('input your choice or option:') if input_key == 'q':
break
elif input_key in menu_path[-1] and input_key in menus.keys():#如果输入为当前级别菜单名且具有下一级菜单
input_path.append(input_key)
menu_path.append(menus[input_key])#记录新菜单访问路径
print('''
第{_n}级菜单:
{_list}
'''.format(_n=len(menu_path),_list=menu_path[-1]))
elif input_key == 'b' and len(menu_path) > 1:
input_path.pop()
menu_path.pop()#回退
print('''
第{_n}级菜单:
{_list}
'''.format(_n=len(menu_path), _list=menu_path[-1]))
else:
print('your input is wrong! (can not "back" or "forward" or "error input")')
print('''
第{_n}级菜单:
{_list}
'''.format(_n=len(menu_path), _list=menu_path[-1]))
上一篇:.NET Core----七牛云图片上传


下一篇:IOS公司开发者账号申请详细教程--1 备用