需求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典

测试环境: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练习题:三级菜单的更多相关文章

  1. python打怪之路【第三篇】:利用Python实现三级菜单

    程序: 利用Python实现三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 coding: menu = { '北京':{ '朝阳':{ '国贸':{ 'CICC':{}, ' ...

  2. python之三级菜单

    python之三级菜单 要求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功 ...

  3. 【python】——三级菜单

    作业需求: 打印三级菜单 可返回上一级 可随时退出程序 #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: __Json.Zzgx__ menu ...

  4. Python学习-------------------三级菜单简单版

    题目: 多级菜单         1.三级菜单         2.可依次选择进入的各子菜单         3.所需新知识点:列表.字典 ReadMe: 这个做循环,比较绕脑子 点开运行即可 Min ...

  5. python作业三级菜单day1(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二三级菜单文 ...

  6. python实现三级菜单源代码

    8月4号早晨天气晴,继续学习‘Alex’的python视频,写了用字典实现三级菜单的代码,都是循环和判断比较lower,废话不多说直接贴码: #!/user/bin/env python #-*-co ...

  7. python 实现三级菜单

    要求: 可选择进入各级子菜单 在各级菜单下可以选择退出 在子菜单下可以返回上一级菜单 Readme: 运行程序,输入菜单选项,进入对应的子菜单 # Joe Young data = { '山东':{ ...

  8. python实现三级菜单间的前后跳转

    #录入菜单def createMenu():    Menu = {}    provinces = ["陕西","四川","江苏"] sh ...

  9. Python入门-三级菜单

    作业题目: 三级菜单 作业需求: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, ...

  10. python 打印三级菜单

    要求: 1.用户选择城市菜单编号显示对应的下级菜单 2.可以返回上级菜单,只有在用户确定正常退出时才退出 #!/usr/bin/env python3 # -*- coding: utf-8 -*- ...

随机推荐

  1. hadoop之 exceeds the limit of concurrent xcievers处理

    dfs.datanode.max.transfer.threads: 默认 4096 < 2.0之前该参数为dfs.datanode.max.xcievers >解释:Specifies ...

  2. RAC8——scan ip的理解

    SCAN概念 先介绍一下什么叫SCAN,SCAN(Single Client Access Name)是Oracle从11g R2开始推出的,客户端可以通过SCAN特性负载均衡地连接到RAC数据库.S ...

  3. 【appium】根据UIAutomator定位元素

    text属性的方法 driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View") ...

  4. 捕获长时间不提交的SQL语句

    /* Formatted on 2014/5/19 17:16:16 (QP5 v5.240.12305.39476) */ SELECT s.sid, s.serial#, ss.sql_text ...

  5. 织梦ask标签的调用

    EDE 问答首页调用标签 标签名称: ask 功能说明:问答调用标签 适用范围:全局使用 基本语法: {dede:ask row='6' qtype='new' tid='0' titlelen='2 ...

  6. ios之runloop笔记

    网上关于runloop的文章不计其数,再此,贴个自认为讲的比较简单明了的文章 http://www.jianshu.com/p/536184bfd163 个人理解: ios的runloop应该是类似于 ...

  7. PREV-1_蓝桥杯_核桃的数量

    问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 1. 各组的核桃数量必须相同 2. 各组内必须能平分核桃( ...

  8. Kubernetes集群安全配置案例

    Kubernetes 系统提供了三种认证方式:CA 认证.Token 认证 和 Base 认证.安全功能是一把双刃剑,它保护系统不被攻击,但是也带来额外的性能损耗.集群内的各组件访问 API Serv ...

  9. 利用x-requested-with判断请求是否是Ajax请求

    在服务器端判断request来自Ajax请求(异步)还是传统请求(同步):         两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1.传统同步请求参数 a ...

  10. python selenium-2 定位元素

    元素 方法 示例 id find_element_by_id('su') driver.get("http://www.baidu.com")driver.find_element ...