# 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. AngularJS中多个ng-app(手动加载模块)

    1.当有多个ng-app时:(首先是要加载angularJS) <div ng-app=""> <p>姓名:<input type="tex ...

  2. 山东省第七届ACM省赛------Reversed Words

    Reversed Words Time Limit: 2000MS Memory limit: 131072K 题目描述 Some aliens are learning English. They ...

  3. Java 异常处理 练习2

    建立exception包,建立Bank类,类中有变量double  balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount ...

  4. Popular Cows-POJ2186Tarjan

    Time Limit: 2000MS   Memory Limit: 65536K       Description Every cow's dream is to become the most ...

  5. 阿里云CentOS6.5搭建服务器JDK+tomcat+MySQL

    阿里云ECS,计划安装jdk:MySQL:tomcat: 一.yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的S ...

  6. 【前端】Three.js

    Three.js 基本概念 渲染器(Renderer) 渲染器将和Canvas元素进行绑定 场景(Scene) 在Three.js中添加的物体都是添加到场景中的,因此它相当于一个大容器.一般说,场景里 ...

  7. iOS中事件传递过程

    iOS中,UIApplication管理着一个事件的队列,当系统获取用户的点击或滑动等事件后,就会将这些事件按顺序插入UIApplication管理的这个队里中,UIApplication再从这个队列 ...

  8. UVA 10795 新汉诺塔问题

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. python re模块

    re模块主要用于查找.替换.分割 print(re.__doc__) 特殊字符(元字符): "." 任意一个字符,除换行符(\n) "^" 字符串开头 &quo ...

  10. DuiLib 源码分析之CDuiString

    duilib是一个比较常见的界面库,闲来无事看看别人写的代码,跟自己写的一比, 才看到了差距呀,感觉自己写的乱七八糟,keep moving CduiString是duilib提供的一个字符串类,功能 ...