Day2课后作业:三级菜单简单版
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'谷歌':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
'联想':{},
'H3C':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'阿泰包子':{},
' 北航':{},
},
'天通苑':{
'圆通快递':{},
'三合贸易':{},
},
'回龙观':{
'腾讯众创':{},
'盈创动力':{},
'三一重机':{},
},
},
'朝阳':{
'太阳宫':{},
'小红门':{},
'十八里店':{},
},
'东城':{
'安定门':{},
'建国门':{},
'东直门':{},
},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车战':{
'携程':{}
}
},
'浦东':{
'东方明珠':{
'黄浦江':{}
}
},
},
'山东':{
'济南':{'红叶谷':{}
},
'青岛':{'啤酒博物馆':{}
},
'泰安':{'泰山':{}
},
},
}
current_level = menu
last_level =[]
while True:
for key in current_level:
print(key)
choice = input(">>:").strip()
if len(choice) == 0:
continue
if choice =="b":
if len(last_level)==0:
break
current_level =last_level[-1]
last_level.pop()
elif choice =="q":
print("程序已退出!")
break
elif choice not in current_level:
continue
else:
last_level.append(current_level)
current_level = current_level[choice]#进入下一层
解释:
1.定义一个字典,menu;
2.定义一个变量current_level,用来加载当前层,第一次赋值menu;
3.定义一个列表last_level,用来加载上一层,第一次可以用空;
4.用一个while循环,条件为真
5,用for循环表示可以一层一层的无限的显示字典的内容;for循环,循环每一层。
6.进入下一层:
current_level =current_level[choice]
并且,每进入一层,就存当前层:
last_level.append(current_levle)
7.每退出一层,取列表最后一个值,然后再删除列表最后一个值。
8.判断:如果输入是回车,就继续输入
9.判断,如果,列表为空,那么直接退出
10.每次返回上一次,上一层就是last_level的最后一个值,然后列表last_level都要删除最后一个元素
11.判断:如果输入的是q,直接退出,不考虑层数
流控图:

Day2课后作业:三级菜单简单版的更多相关文章
- Day2课后作业:购物车简单版
PRODUCT_LIST = [ ['iphone7',6500], ['macbook',12000], ['pythonbook',66], ['bike',999], ['coffee',31] ...
- Python学习-------------------三级菜单简单版
题目: 多级菜单 1.三级菜单 2.可依次选择进入的各子菜单 3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...
- day1作业--三级菜单
作业概述: 写一个三级菜单 实现如下功能: (1)可依次选择进入各子菜单 (2)在每一级按“b”都可以返回上一级,按“q"都可以退出 流程图: readme: 简介: three_menu. ...
- python作业三级菜单day1(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...
- Python 三级菜单 增强版
需要实现的功能是:三级菜单1.从文本内读出选项2.查询每一级的选项,并能对选项进行增/删/改功能3.每一级可以退出程序或者返回上一层 2018-5-14 更新内容 思路 实现过程中的BUG及解决方案: ...
- python3 三级菜单-基础版
# -*- coding:utf-8 -*- data = { "北京":{ "东城区":{ "安定门":["国子监", ...
- Day2课后作业:sed替换程序
#!/usr/bin/env python #_*_conding:utf-8_*_ import sys,os old_file = sys.argv[1] new_file = sys.argv[ ...
- java课程课后作业190612之Beta版总结会议
1.每个成员在beta 阶段的实践和alpha 阶段有何改进? 陈阳:在编程的时候学习广播知识,了解了Android的广播机制完成了上课静音以及课前提醒的功能,在代码的美观上也有了一定的提升 2. 团 ...
- Py修行路 python基础 (五)三元运算 字符编码 元组 集合 三级菜单优化!
三元运算 条件判断不能加冒号: a=3 b=5 c=a if a<b else b oct() 转成八进制的简写:16进制 标志:BH为后缀或是0x为前缀hex() 转成16进制 元组 跟列表是 ...
随机推荐
- 理解vue ssr原理,自己搭建简单的ssr框架
前言 大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口.Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些 ...
- backbone测试代码
一.入门测试 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- js正则表达式,密码长度要大于6位,由数字和字母组成
var pwd = $("#pwd").val(); var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,}$/; if(!reg ...
- mysql初始化命令及其他命令
这个问题纠结了我两年: 为了配置my.cnf中 undo的 参数生效,以及生成undo文件,使用一下命令 /usr/bin/mysql_install_db --defaults-file=/et ...
- 详细的解说public,protected,Default和private的权限问题
详细的解说public,protected,Default和private的权限问题 让人更好的了解public,protected,Default和private他们之间的权限问题,我会做一个直观的 ...
- C语言教学杂记——字母排序
一个人在被告诉一个问题应该怎么被解决后,而且亲身试验效果OK后,一旦遇到类似的问题,就会条件反射般直接拿这个方法来用了.很少会去想为什么要用这个方法,会不会有什么隐患,还有没有别的方法呢,等等这些问题 ...
- c++ zlib(qt)压缩与解压缩
#include <QtCore/QCoreApplication> #include "zlib.h" #include "stdio.h" #i ...
- Winform中ComBox大小设置
combox,listview等一些控件的外观会由于字体大小的改变而改变.修改字体的大小宽度自动变化
- JS正则表达式(一)
正则表达常用符号 /..../ 开始结束 ^ 开始 $ 结束 /s 任何非空字符 /S 非空 /d 匹配一个数字=[0-9] /D 匹配一个非数字=[^0-9] /w 匹配一个数字,下划线 ...
- Flutter实战视频-移动电商-24.Provide状态管理基础
24.Provide状态管理基础 Flutter | 状态管理特别篇 —— Provide:https://juejin.im/post/5c6d4b52f265da2dc675b407?tdsour ...