首页 > 代码库 > python第四天

python第四天

今天是一个坎,在做三级菜单时卡住了,因为想要简洁的代码,就要用到递归函数,卡的不要不要的!不过最后在同学老师的提点帮助下,还是解决了!

作业要求:

三级菜单:
1. 运行程序输出第一级菜单
2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单
3. 菜单数据保存在文件中

文件操作还没有学到,暂时做到1,2两点,第3点明后天补上!

照旧,先上一下流程图:

技术分享

详细代码:

技术分享
  1 #!usr/bin/env python
  2 #-*-coding:utf-8-*-
  3 # Author calmyan
  4 #定义字典菜单三层
  5 info={
  6     "家电":{
  7         "冰箱":{
  8             "双门":[海尔,西门子,容声],
  9             "多门":[海尔,容声,海信],
 10             "三门":[博世,海信,美的],
 11             "对开门":[美的,三星,容声]
 12         },
 13         "洗衣机":{
 14             "迷你":[小天鹅,海尔,松下],
 15             "滚筒":[三洋,小天鹅,容声],
 16             "波轮":[TCL,美的,LG],
 17             "一体":[美的,LG,西门子]
 18         },
 19         "空调":{
 20             "冷暖空凋":[],
 21             "中央空调":[],
 22             "柜式":[],
 23             "壁挂式":[]
 24         }
 25     },
 26     "电脑":
 27     {
 28         "整机":{
 29             "笔记本":[],
 30             "台式机":[],
 31             "一体机":[],
 32             "服务器":[]
 33         },
 34         "外设":{
 35             "键盘":[],
 36             "鼠标":[],
 37             "摄像头":[],
 38             "U盘":[]
 39         },
 40         "配件":{
 41             "CPU":[],
 42             "内存":[],
 43             "显卡":[],
 44             "主板":[]
 45         }
 46 
 47     },
 48     "图书":{
 49         "人文":{
 50             "历史":[],
 51             "心理学":[],
 52             "国学":[],
 53             "法律":[]
 54         },
 55         "少儿":{
 56             "绘本":[],
 57             "科普":[],
 58             "智力开发":[],
 59             "手工游戏":[]
 60         },
 61         文艺:{
 62             小说:[],
 63             文学:[],
 64             传记:[],
 65             书法:[]
 66         }
 67     }
 68 }
 69 
 70 
 71 
 72 def menu_open(info):#递归函数 传入下一层菜单
 73     global exit_flag,conut#声明全局变量
 74     #conut=1
 75     exit_flag=True#先为真
 76     while exit_flag:
 77         if conut<4:#判断菜单层级不是最底层加一
 78             conut+=1
 79         _tab2=_tab.expandtabs(tabsize=(conut*3))#为了增加菜单的可读性,按层级来加tab键
 80         for i in info:
 81             print(_tab2,i)
 82         if conut==4:#如果层级为4,也是最后一层
 83             name=input("当前为第4是最后一层 按B/b返回<<<  按Q/q退出:")
 84         else:
 85             name=input("当前为第 \033[32;1m%s\033[0m 层,请输入名称进入下一层>>> 按B/b返回<<<  按Q/q退出:"% conut)
 86         if name==b or name==B:
 87             conut-=2#因数进行循环就加一,所以需要减2
 88             break
 89         if name==Q or name==q:
 90             print("你已经退出菜单!")
 91             exit_flag=False
 92             break
 93         if name in info and conut!=4:#如果存在并不是最后一层则调用函数
 94             menu_open(info[name])
 95         else:
 96             conut-=1
 97             print("你输入的目录不存在!")
 98             continue
 99 
100 
101 global conut,_tab
102 conut=1
103 _tab=\t\t
104 
105 exit_flag = True
106 while exit_flag:
107     for  i in info:
108         print(i)
109     name=input("当前为第\033[32;1m 1\033[0m 层,请输入名称进入下一层>>>  按Q/q退出:")
110     if name==Q or name==q:
111         print("你已经退出菜单!")
112         exit_flag=False
113 
114     if name in info:
115         menu_open(info[name])
116     else:
117         print("你输入的目录不存在!")
118         continue
View Code

菜单内容比较少,将就着吧,回头有空再让它丰满起来!

python第四天