记录下一下

 #!/usr/bin/env python3
'''
需求:三级菜单
三级菜单,依次进入子菜单
'''
City = {
'北京':{
'大兴区':[
'亦庄','黄村','中信新城','B返回','Q退出'
],
'丰台区':[
'岳各庄','五棵松','丰台路口','B返回','Q退出'
],
'朝阳区':[
'劲松','双井','国贸','B返回','Q退出'
],
'B返回':'返回',
'Q退出':'退出'
},
'上海':{
'浦东区':[
'世纪大道','陆家嘴','盛世年华','B返回','Q退出'
],
'普陀区':[
'东方汽配城','金沙社区','东锦国际大厦','B返回','Q退出'
],
'徐汇区':[
'上海应用技术大学','上海长途客运南站','上海东方体育中心','B返回','Q退出'
],
'B返回': '返回',
'Q退出': '退出'
},
'广州':{
'天河区':[
'珠江公园','天河体育场','广东师范大学','B返回','Q退出'
],
'白云区':[
'广州体育馆','白云文化广场','广州百信广场','B返回','Q退出'
],
'海珠区':[
'中山大学','城市职业学院','南方医科大学','B返回','Q退出'
],
'B返回': '返回',
'Q退出': '退出'
}
} # print(City) Choice_of_city = list(City.keys())#字典转换为列表
# print(City.keys())
# print(City.values())
#打印字典使用format函数格式化
# print('{0[0]} {0[1]} {0[2]}'.format(Choice_of_city)) def menu():#使用函数def
while True:#只要为真就无限循环
print('{0[0]} {0[1]} {0[2]}'.format(Choice_of_city))#将列表Choice_of_city以函数format格式化打印
User_input_City = input('请选择城市:').strip()#用户输入,次数strip为移除空白
if User_input_City in Choice_of_city:#判断用户输入的信息是否在列表User_input_City中
District = list(City[User_input_City])#获取用户输入信息并根据用户输入信息取出字典City的values,
# 此处用户输入信息User_input_City相当于字典City的keys,并且把获取的values转换为列表District
while True:#只要为真就无限循环
# if User_input_City in Choice_of_city:
print('{0[0]} {0[1]} {0[2]} {0[3]} {0[4]}'.format(District))#将列表District以函数format格式化打印
User_input_District = input('请选择区县:').strip()#用户输入
if User_input_District not in District:#判断用户输入不在于列表District中
print('输入错误,请重新输入!!')
continue#退出当前循环继续下一次循环
if User_input_District in District:#判断用户输入是否在列表District中
if User_input_District == District[3]:#判断用户输入是否等于District中第4个元素
break#跳出当前循环
elif User_input_District == District[4]:#判断用户输入是否等于District中第4个元素
return#退出整个函数,这里用来退出所有循环
else:
while True:
Township = (City[User_input_City][User_input_District])
print('{0[0]} {0[1]} {0[2]} {0[3]} {0[4]}'.format(Township))
User_input_township = input('选择乡镇:').strip()
if User_input_township not in Township:
print('输入错误,请重新输入!!')
continue
if User_input_township in Township:
if User_input_township == Township[3]:
break
if User_input_township == Township[4]:
return
else:
print('Bingo!!!')
return
else:
continue
else:
break
else:
continue
else:
print('输入错误,请重新输入!!')
continue
# else:
# continue
# else:
# print('输入不正确,请重新输入!!')
menu()

 另外在写了一个版本:

 #!/usr/bin/env python3
City = {
'北京市':{
'大兴区':[
'亦庄','黄村','中信新城','返回','退出'
],
'丰台区':[
'岳各庄','五棵松','丰台路口','返回','退出'
],
'朝阳区':[
'劲松','双井','国贸','返回','退出'
],
'返回':'返回',
'退出':'退出'
},
'上海市':{
'浦东区':[
'世纪大道','陆家嘴','盛世年华','返回','退出'
],
'普陀区':[
'东方汽配城','金沙社区','东锦国际大厦','返回','退出'
],
'徐汇区':[
'上海应用技术大学','上海长途客运南站','上海东方体育中心','返回','退出'
],
'返回': '返回',
'退出': '退出'
},
'广州市':{
'天河区':[
'珠江公园','天河体育场','广东师范大学','返回','退出'
],
'白云区':[
'广州体育馆','白云文化广场','广州百信广场','返回','退出'
],
'海珠区':[
'中山大学','城市职业学院','南方医科大学','返回','退出'
],
'返回': '返回',
'退出': '退出'
}
}
dic_city = {}
dic_district = {}
dic_address = {}
def menu():
while True:
for i in enumerate(City, 1): #循环字典City,并在keys前加序号
print(i[0], i[1]) #循环打印序号+City的keys
dic_city[str(i[0])] = i[1] #将打印的序号和字典City的keys循环加入新的字典dic_city中,此处str将序号转换为字符串,方便后面判断
user_input = input('选择前往城市编号:').strip() #用户输入,strip去掉两侧空格
# print(dic_city)
if len(user_input) == 0: #计算用户输入长度是否为0,判断输入是不是空值
print('输入不能为空,请重新输入!')
continue #退出本次循环
elif user_input in dic_city: #判断用户输入是否在字典dic_city中
while True:
for i in enumerate((City[dic_city[user_input]]),1):#循环中添加序号
print(i[0],i[1])
dic_district[str(i[0])] = i[1]
district = input('区县选择或退出返回(请填写序号即可):').strip()
if len(district) == 0: #计算用户输入长度是否为0,判断输入是不是空值
print('输入不能为空,请重新输入!')
continue
elif district == list(dic_district)[-2]: #判断用户输入是否等于倒数第二个元素,即:返回
break
elif district == list(dic_district)[-1]: #判断用户输入是否等于最后一个元素,即:退出
return #退出整个函数,这里用来退出多层循环
elif district not in dic_district: #判断用户输入不在字典dic_district中
print('输入不正确,请重新输入!')
continue
else:
while True:
for i in enumerate((City[dic_city[user_input]][dic_district[district]]),1):#多层字典,最外层字典City,
# [dic_city[user_input]新字典中取到City的keys,这样取到第二层字典;dic_district[district]新字典中取到
# 第二层字典的keys,City[dic_city[user_input]][dic_district[district]]整个是第二层字典加keys,最后取
# 出第三层
print(i[0],i[1])
dic_address[str(i[0])] = i[1]
address = input('选择地址或者返回退出(请填写序号即可):').strip()
if len(address) == 0:
print('输入不能为空,请重新输入!')
continue
elif address == list(dic_address)[-2]:
break
elif address == list(dic_address)[-1]:
return
elif address not in dic_address:
print('输入不正确,请重新输入!')
continue
else:
addr = '''
您选择的地址为:%s%s%s
'''%(dic_city[user_input],dic_district[district],dic_address[address])#段落输出格式,%s代替字符串
print(addr.strip())
return
continue
break
continue
else:
print('输入不正确,请重新输入!')
continue
menu()

python3 实现一个多级菜单小功能的更多相关文章

  1. Vue2 实现树形菜单(多级菜单)功能模块

    结构示意图 ├── index.html ├── main.js ├── router │ └── index.js # 路由配置文件 ├── components # 组件目录 │ ├── App. ...

  2. Java实现点击一个Jlabel增加一个Jlabel的小功能

    当界面生成以后,自己想做一个点击一个Jlabel增加一个Jlabel,即类似于QQ的添加好友以后可以及时的加进一个好友.自己做了好久,发现不能及时刷新.在网上查了一下,然后自己研究了一小会.发现需要v ...

  3. 【Pthon入门学习】多级菜单小例子

    menu_list = { '北京':{ '昌平':{ '回龙观':{ '和谐家园':{}, '矩阵小区':{}, '北店家园':{} }, '沙河':{ '北街家园1区':{}, '北街家园2区': ...

  4. JQ 查找 两个同辈元素之间 的同辈元素 nextUntil() 用于做一个多级菜单

    可以应用的地方,参考了淘宝的API菜单列表 我自己的应用

  5. python3 用户登录验证的小功能

    用户登录验证,记录一下,还需要修改黑名单不合理 #!/usr/bin/env python3 ''' 需求:编写登录接口 1.输入用户名和密码 2.验证用户密码成功后输出欢迎消息 3.3次没有验证通过 ...

  6. python实例2-写一个爬虫下载小功能

    主要是通过url,和re两个模块对一个网页的固定图片进行模糊匹配后下载下来. #! /usr/bin/python import re import urllib def gethtml(url): ...

  7. Mybatis实现多级菜单查询

    写在前面 最近实现一个小需求,前端需要菜单的信息,需要向后端发起获取菜单的请求,菜单又是一个多级菜单,后端我用的mybatis进行数据库查询,实现的方法我这里想到有两种,欢迎大家补充. 1. 在Men ...

  8. MVC5+EF6 入门完整教程13 -- 动态生成多级菜单

    稍微有一定复杂性的系统,多级菜单都是一个必备组件. 本篇专题讲述如何生成动态多级菜单的通用做法. 我们不用任何第三方的组件,完全自己构建灵活通用的多级菜单. 需要达成的效果:容易复用,可以根据mode ...

  9. Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta ...

随机推荐

  1. Java实例---简单的投票系统

    代码分析  InputData.java package vote; import java.io.BufferedReader; import java.io.IOException; import ...

  2. CentOS 7 安装Rabbitmq

    第一步也是往往最重要的一步:下载安装包! Rabbitmq地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.5 Erla ...

  3. December 14th 2016 Week 51st Wednesday

    Everything has its time and that time must be watched. 万物皆有时,时来不可失. Everything has its time, and I r ...

  4. December 07th 2016 Week 50th Wednesday

    Life is a flower, and love is the honey of the flower. 人生是花儿,而爱情就是花的蜜. My life is not as beautiful a ...

  5. scala当中的文件操作和网络请求

    1.读取文件当中每一行的数据 def main(args: Array[String]): Unit = { //注意文件的编码格式,如果编码格式不对,那么读取报错 val file: Buffere ...

  6. URAL-1019 Line Painting----暴力或线段树

    题目链接: https://cn.vjudge.net/problem/URAL-1019 题目大意: 一个0~1e9的区间,初始都是白的,现进行N次操作,每次将一段区间图上一中颜色.最后问说连续最长 ...

  7. UIView 中 hidden、alpha、clear color 与 opaque 的区别

    透明度与图层混合相关,影响到图片绘制的效率. hidden 此属性为 BOOL 值,用来表示 UIView 是否隐藏.关于隐藏大家都知道就是让 UIView 不显示而已,但是需要注意的是: 当前 UI ...

  8. collecitons.deque

    python队列,可以使用collections里面的deque,将列表当作队列使用. deque方法有: from collections import deque deque.append() d ...

  9. [CTSC2018]假面

    题目 先来考虑一下第一问,血量有\(P\)的概率减\(1\) 由于我们最后需要求每一个人的期望血量,于是考虑维护出每个人处于不同血量时候的概率 一个简单\(dp\)即可 \[dp_{i,j}=dp_{ ...

  10. javascrict中innerhtml和innerText的关系

    1.time.innerHTML 就是id为time的标签中所有包含的代码内容 比如 <div id='time'><a href='#'>time</a>< ...