多级菜单
2016-06-20 23:23
253 查看
多级菜单
第二种方法
# -*- coding: utf-8 -*- __author__ = 'am_mm_NO.1' import re memu = { "东北":{ "吉林省":{ "吉林市":['吉林市1','吉林市2'], "长春":['长春1','长春2'],}, "辽宁省":{ "沈阳":['沈阳1','沈阳2','沈阳3'], "大连":['大连1','大连2'], }, }, '华北':{ '河北省':{ '廊坊':['廊坊1','廊坊2'], '保定':['保定1','保定2'], }, '内蒙古':{ '呼和浩特':['呼和浩特1','呼和浩特2','呼和浩特3'], '包头':['包头1','包头2'] }, }, } flag = True while flag: # 全局变量,设置跳出整个循环 for i,v in enumerate(memu.keys()): #遍历第一层字典 print i,v #打印出第一层key,value num_1=raw_input("请输入一级菜单号,按q退出:").strip() #接受键盘输入 if num_1 == 'q': flag = False break if num_1.isdigit(): num_1=int(num_1) if num_1<= len(memu): key_1 = memu.keys()[num_1] while flag: for i1,v1 in enumerate(memu[key_1]): print i1,v1 num_2 = raw_input("请输入二级菜单号,按q退出,b返回:").strip() if num_2 == 'q': flag = False break if num_2 == 'b': break if num_2.isdigit(): num_2 = int(num_2) if num_2 <= len(memu[key_1]): key_2 = memu[key_1].keys()[num_2] while flag: for i2,v2 in enumerate(memu[key_1][key_2]): print i2 ,v2 num_3 = raw_input("请输入三级菜单号,按q退出,b返回:").strip() if num_3 == 'q': flag = False break if num_3 == 'b': break if num_3.isdigit(): num_3 = int(num_3) if num_3 <= len(memu[key_1][key_2]): key_3 = memu[key_1][key_2].keys()[num_3] while flag: for i3,v3 in enumerate(memu[key_1][key_2][key_3]): print i3,v3 num_4 = raw_input("按q退出,b返回:").strip() if num_4 == 'q': flag = False break if num_4 == 'b': break
第二种方法
#!/usr/bin/python # -*- coding: utf-8 -*- __author__ = 'am_mm_NO.1' import re memu = { "东北":{ "吉林省":{ "吉林市":['吉林市1','吉林市2'], "长春":['长春1','长春2'], }, "辽宁省":{ "沈阳":['沈阳1','沈阳2','沈阳3'], "大连":['大连1','大连2'], }, }, '华北':{ '河北省':{ '廊坊':['廊坊1','廊坊2'], '保定':['保定1','保定2'], }, '内蒙古':{ '呼和浩特':['呼和浩特1','呼和浩特2','呼和浩特3'], '包头':['包头1','包头2'] }, }, 'shanghai':{ 'pudong':{ 'pudong1':['com1','com2'], 'pudong2':['it1','it2'], }, 'xuhui':{ 'xuhui1':['xuhui11','xuhui12','xuhui33'], 'xuhui2':['xuhui21','xunhui22'] }, } } #for i in enumerate(memu.keys()): # print i exit_flag = False while not exit_flag: for index,key in enumerate(memu.keys()): print index,key choice_1 = raw_input("please choose menu_1 to enter:") if choice_1.isdigit(): choice_1 = int(choice_1) key_1 = memu.keys()[choice_1] while not exit_flag: for index,key in enumerate(memu[key_1]): print '--->', index,key #print "==========" choice_2 = raw_input("please choose menu_2 to enter:") if choice_2.isdigit(): choice_2 = int(choice_2) key_2 = memu[key_1].keys()[choice_2] elif choice_2 == 'quit': print '到上一级目录' exit_flag = True break elif choice_2 == 'back': break while not exit_flag: for index,key in enumerate(memu[key_1][key_2]): print '--->--->', index,key choice_3 = raw_input("please choose menu_3 to enter:") if choice_3.isdigit(): choice_3 = int(choice_3) elif choice_3 == 'quit': print '到上一级目录' exit_flag = True break elif choice_3 == 'back': break key_3 = memu[key_1][key_2].keys()[choice_3] #print "this is the last level ..." while not exit_flag : for index,key in enumerate(memu[key_1][key_2][key_3]): print '--->--->--->', index,key choice_4 = raw_input("please choose menu_4 to enter:") if choice_4.isdigit(): print "this is the last level ..." elif choice_4 == 'quit': print '到上一级目录' exit_flag = True break elif choice_4 == 'back': break #else: # break else: print "=========="
相关文章推荐
- jQuery 获取有多个class名的元素
- 简单的计算
- Linux命令
- 面向对象程序设计课第七次作业
- 第1条:考虑用静态工厂方法代替构造器
- iOS Objective-C 正则表达式指南
- MediaPlayer基础-生命周期状态分析
- 编写登陆接口
- BZOJ_1014_[JSOI2008]_火星人prefix_(Splay+LCP_Hash+二分)
- 关于C++内联函数
- 分布式锁1 Java常用技术方案
- Mixed Finite Elements for Variational Surface Modeling
- JavaScript基本数据类型注意点
- Java多线程锁释放
- USACO Prime Palindromes
- lstm
- python下代码优化的一个例子
- 一步步追踪Dialog的创建流程(一)
- CallerInformation
- 2016-06-20-课程设计日志