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进制 元组 跟列表是 ...
随机推荐
- CMD help
ASSOC 显示或修改文件扩展名关联. ATTRIB 显示或更改文件属性. BREAK 设置或清除扩展式 CTRL+C 检查. BCDEDIT 设置启动数据库中的属性以控制启动加载. CACLS 显示 ...
- awk实现求和、平均、最大值和最小值的计算操作
0.准备和数据文件 比如有一个数据文件,只有一列(在之前可以通过各种手段过滤出只有数字这一列),比如操作的响应时间 Txt代码 490898 1189235 20212 1494270 14 ...
- FFT的常数优化
卡得一手好常数..学习了..(似乎只对FFT有效) JZOJ 4349 #include <bits/stdc++.h> #define LL long long #define DB l ...
- Java使用Jacob转换Word为HTML
从今天开始,我也要养成记录开发中遇到的问题和解决方法的好习惯! 最近开发一个Android项目,需要用到查看Word和Pdf文档的功能,由于Android没有直接显示Word和PDF文档的组件,只有一 ...
- JavaScript-Tool:jquery.md5.js
ylbtech-JavaScript-Tool:jquery.md5.js 1.返回顶部 1. 引入js后 使用方法:document.write($.md5('1234')); 加密结果:81dc9 ...
- redis 操作使用
/*1.Connection*/ $redis = new Redis(); $redis->connect('127.0.0.1',6379,1);//短链接,本地host,端口为6379,超 ...
- Linux : linux命令之 svn
感谢前辈的整理,让我直接站在巨人的肩膀上.来自:http://www.jb51.net/os/RedHat/2461.html 1.将文件checkout到本地目录 svn checkout path ...
- Kafka入门之生产者消费者
一.Kafka安装与使用 ( kafka介绍 ) 1. 下载Kafka 官网 http://kafka.apache.org/ 以及各个版本的下载地址 http://archive.ap ...
- opencv Mat.at
opencv c++ mat获取像素及像素赋值 For accessing pixel's channel value : ; i < image.cols; i++) { ; j < i ...
- Tesseract的使用
参考:http://blog.csdn.net/qy20115549/article/details/78106569 下载tess4j的安装包. 首先,在该网站中下载tess4j的安装包. http ...