python练习题:三级菜单
需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典
测试环境:win7系统,python3.7.0,工具:pycharm-community-2018.1.4
menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'网易':{},
'google':{}
},
'中关村':{
'爱奇艺':{},
'汽车之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龙观':{},
},
'朝阳':{},
'东城':{},
},
'上海':{
'闵行':{
"人民广场":{
'炸鸡店':{}
}
},
'闸北':{
'火车站':{
'携程':{}
}
},
'浦东':{},
},
'山东':{},
}
# 需求:
# 可依次选择进入各子菜单
# 可从任意一层往回退到上一层
# 可从任意一层退出程序
# 所需新知识点:列表、字典
import sys
while True:
for i in menu:
print('\t', i)
choice = input("以上为 一级菜单 请选择(q退出,a返回上一层,若输入有误继续执行输入)>:")
if choice == 'q':
sys.exit(0)
elif choice == 'a':
print('\t','已经是第一层了')
# 判断输入是否在一级目录里面
if choice in menu: while True:
# 输出一级目录对应的二级目录
for i2 in menu[choice]:
print('\t',i2)
choice2 = input("以上为 二级菜单 请选择(q退出,a返回上一层,若输入有误继续执行输入)>:")
if choice2 == 'q':
sys.exit(0)
if choice2 == 'a':
break
#判断 输入 是否在二级目录里面
if choice2 in menu[choice]: while True:
# 输出二级目录对应的三级目录
for i3 in menu[choice][choice2]:
print('\t',i3)
choice3 = input("以上为 三级菜单 请选择(q退出,a返回上一层,若输入有误继续执行输入)>:")
if choice3 == 'q':
sys.exit(0)
if choice3 == 'a':
break
# 判断输入是否在 三级目录里面
if choice3 in menu[choice][choice2]: while True:
# 输出三级目录下对应的四级目录
for i4 in menu[choice][choice2][choice3]:
print('\t',i4)
choice4 = input("以上为 最后一层 请选择(q退出,a返回上一层,若输入有误继续执行输入)>:")
if choice4 == 'q':
sys.exit(0)
if choice4 == 'a':
break
#--------------------------代码简化版------------------------------------
# 发现有重复内容,不要写重复的代码,
current_layer = menu
last_layer = []
while True: for i in current_layer:
print(i)
choice = input('>').strip()
if choice in current_layer:
last_layer.append(current_layer)
print(last_layer)
current_layer = current_layer[choice] elif choice == 'q':
break
elif choice == 'a':
if len(last_layer) != 0:
last = last_layer.pop()
current_layer = last
print(type(current_layer))
else:
print('已经是第一层了')
else:
print('输入错误,请重新输入:')
continue
# print("删除第一个元素:",sentence.pop(0) 、pop() 函数用于移除列表中的指定索引位置的一个元素(默认最后一个元素),并且返回该元素的值。
python练习题:三级菜单的更多相关文章
- python打怪之路【第三篇】:利用Python实现三级菜单
程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...
- python之三级菜单
python之三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功 ...
- 【python】——三级菜单
作业需求: 打印三级菜单 可返回上一级 可随时退出程序 #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: __Json.Zzgx__ menu ...
- Python学习-------------------三级菜单简单版
题目: 多级菜单 1.三级菜单 2.可依次选择进入的各子菜单 3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...
- python作业三级菜单day1(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...
- python实现三级菜单源代码
8月4号早晨天气晴,继续学习‘Alex’的python视频,写了用字典实现三级菜单的代码,都是循环和判断比较lower,废话不多说直接贴码: #!/user/bin/env python #-*-co ...
- python 实现三级菜单
要求: 可选择进入各级子菜单 在各级菜单下可以选择退出 在子菜单下可以返回上一级菜单 Readme: 运行程序,输入菜单选项,进入对应的子菜单 # Joe Young data = { '山东':{ ...
- python实现三级菜单间的前后跳转
#录入菜单def createMenu(): Menu = {} provinces = ["陕西","四川","江苏"] sh ...
- Python入门-三级菜单
作业题目: 三级菜单 作业需求: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, ...
- python 打印三级菜单
要求: 1.用户选择城市菜单编号显示对应的下级菜单 2.可以返回上级菜单,只有在用户确定正常退出时才退出 #!/usr/bin/env python3 # -*- coding: utf-8 -*- ...
随机推荐
- MSG命令使用详解
最近在编写FTP上传数据的批处理时,需要用到局域网内传输数据来提示错误,突然想起忘了N久没用的命令(net send), 结果在win7 下cmd运行net send /? 运行失败.经过百度大神的 ...
- mysql四种修改密码的方式
方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...
- 完成分析 FastAdmin 用户余额功能(后台篇)
分析 FastAdmin 用户余额功能(后台篇) 分析 FastAdmin 用户余额功能(后台篇) 虽然 FastAdmin 主要针对后台的框架,但也在不断完善前台的功能,有一天小伙伴在社区里提了一个 ...
- zsh 使用
使用ctrl+r,弹出搜索框: bck-i-search: mac os 系统默认的终端为bash,切换该终端为zsh,可以用以下命令: chsh -s /bin/zsh 如过要切回默认终端bash, ...
- Apache Spark 内存管理详解
在spark里面,内存管理有两块组成,一部分是JVM的堆内内存(on-heap memory),这部分内存是通过spark dirver参数executor-memory以及spark.executo ...
- AppBox中,如何在用户管理页面显示用户所属的多个角色?
<f:TemplateField Width="200px" HeaderText="角色"> <ItemTemplate> ...
- JMeter--详解JMeter配置元件
JMeter配置元件可以用来初始化默认值和变量,以便后续采样器使用.将在其作用域的初始化阶段处理. CSV Data Set Config:被用来从文件中读取数据,并将它们拆分后存储到变量中,适合处理 ...
- SqlBulkCopy(批量复制)使用方法
SqlBulkCopy提供了一种将数据复制到Sql Server数据库表中高性能的方法.SqlBulkCopy 包含一个方法 WriteToServer,它用来从数据的源复制数据到数据的目的地. Wr ...
- wxWidgets:菜单
和菜单有关的类主要有两个:wxMenuItem和wxMenu.wxMenuItem用于表示一个菜单项,而wxMenu是wxMenuItem的弹出或下拉列表. 现在让我们看看如何给我们的框架类加上菜单: ...
- sql 查询年龄
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- ...