# encoding: utf-8

# Creator:耿亚月    Creation time:2017-1-2
# Modifier:耿亚月 Modification time:2017-1-2 #输入选择的省、市、县
def choose(data, name, level):
for i in data:
print('\t'*level,i)
choice = input('选择进入{name},按b返回》,q退出:'.format(name=name))
return choice #输入选择是否返回上一层
def choose_back(place):
choice=input('Do you want to back to {where}? y/n:'.format(where=place))
return choice #输入选择是否退出
def choose_exit():
choice = input('Do you want to exit? y/n:')
if choice == 'y':
return True data = {
'北京': {
'昌平': {
'沙河': ['oldboy','test'],
'天通苑': ['链家地产','我爱我家'],
},
'朝阳': {
'望京': ['奔驰','陌陌'],
'国贸': ['CICC','HP'],
'东直门': ['Advent','飞信'],
},
'海淀': {},
},
'山东': {
'德州': {},
'青岛': {},
'济南': {},
},
'广东': {
'东莞': {},
'常熟': {},
'佛山': {},
},
} exit_flag = False
#省
while not exit_flag:
choice = choose(data, '省', 0)
if choice in data:
#市
while not exit_flag:
choice2 = choose(data[choice], '市', 1)
if choice2 in data[choice]:
#县
while not exit_flag:
choice3 = choose(data[choice][choice2], '县', 2)
if choice3 in data[choice][choice2]:
print(data[choice][choice2][choice3])
exit_flag = True
#县
elif choice3 == 'b':
if choose_back('县') == 'y':
break
elif choice3 == 'q':
exit_flag = choose_exit()
else:
print('Invalid choice,please try again')
#市
elif choice2 == 'b':
if choose_back('省') == 'y':
break
elif choice2 == 'q':
exit_flag = choose_exit()
else:
print('Invalid choice,please try again')
#省
elif choice == 'q':
exit_flag = choose_exit()
else:
print('Invalid choice,please try again')

3level_menus的更多相关文章

随机推荐

  1. sqlserver2008一直显示正在还原

      sqlserver2008一直显示正在还原.如果不需要还原,则使用: restore database test with recovery如果只需要还原,则使用: restore databas ...

  2. java URL实现调用其他系统发送报文并获取返回数据

    模拟本系统通过Url方式发送报文到目标服务器,并获取返回数据:(实现类) import java.io.BufferedOutputStream; import java.io.BufferedRea ...

  3. Xcode 8

    (一)Xcode8去掉多余LOG 1.打开我们的项目,进入EditScheme 2.我们在Environment Variables中添加OS_ACTIVITY_MODE=disable

  4. 20161127-emmagee

    Android 自动化测试 Emmagee Emmagee 是一个性能测试小工具 用来监控指定被测应用在使用过程中占用机器的CPU, 内存,流量资源的性能小工具 阅读目录 Emmagee 介绍 Emm ...

  5. sql server CTE递归使用测试

    --CTE递归查询 if(object_id(N'menu') > 0) drop table menu CREATE TABLE MENU ( name nvarchar(50) NOT NU ...

  6. JAVA 1.2(原生数据类型 Primitive Data Type)

    1. Java的数据类型分为2类 >> 原生数据类型(primitive data type) >> 引用数据类型(reference data type) 3. 常量和变量 ...

  7. Hello 2017!

  8. gulp 基本使用

    1, gulp 依赖node, 使用gulp 之前,要先安装node.  Node 安装完成后,它自带npm. Npm: node package manager 就是node 包管理器. 用过jav ...

  9. WinForm中MouseEnter和MouseLeave混乱的问题

    MouseEnter+MouseLeave不行,我用了MouseMove+MouseLeave,效果一样 最近做个聊天的系统,仿照qq的界面设计,像qq聊天界面中字体.表情.截图等图片,鼠标放上去显示 ...

  10. 如何解决结果由block返回情况下的同步问题(转)

    开发中经常会遇到一种简单的同步问题: 系统在获取资源时,采用了block写法,外部逻辑需要的结果是在block回调中返回的 举个例子: 请求获取通讯录权限的系统弹窗 调用系统方法请求通讯录权限: AB ...