python中三级菜单讲解_Python三级菜单实例详解

下面小编就为大家带来一篇Python三级菜单的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

要求:

打印省、市、县三级菜单

可返回上一级

可随时退出程序

版本1

# _author : Ahern Li

# @_date : 2017/9/12

menu = {

'浙江省':{

'杭州市':{

'余杭区':{'中泰':{},'临平':{}},

'西湖区':{'西湖':{},'留下':{}}

},

'温州市':{

'苍南县':{'灵溪':{},'龙港':{}},

'瑞安县':{'安阳':{},'锦湖':{}}

}

},

'广东省':{

'广州市':{

'越秀区':{'人民路':{},'北京路':{}},

'荔湾区':{'沙面':{},'龙津':{}}

},

'珠海市':{

'香洲区':{'拱北':{},'吉大':{}},

'金湾区':{'红旗镇':{},'平沙镇':{}}

}

}

}

# 返回标记

q_flag = True

# 退出标记

Q_flag = True

# 返回,退出标记出现False退出循环

while q_flag and Q_flag:

# 遍历打印省份

for i in menu:

print(i)

province = input('请输入要查找的省份(Q,退出):').strip()

if province in menu:

while q_flag and Q_flag:

for i in menu[province]:

print(i)

city = input('请输入要查找的市(q,返回 或 Q,退出):').strip()

if city in menu[province]:

while q_flag and Q_flag:

for i in menu[province][city]:

print(i)

county = input('请输入要查找的区或县(q,返回 或 Q,退出):').strip()

if county in menu[province][city]:

while q_flag and Q_flag:

for i in menu[province][city][county]:

print(i)

# 提示最后一页,输入格式

choice = input('最后一页! q,返回 或 Q,退出:').strip()

if choice == 'q':

# 配合 else: q_flag = True 退出该层循环,返回上层循环

q_flag = False

elif choice == 'Q':

# 退出大循环

Q_flag = False

else:

# 提示输入不合法

print('输入错误!')

# 改回 q_flag 的值,实现只退出一层循环

else:

q_flag = True

elif county == 'q':

q_flag = False

elif county == 'Q':

Q_flag = False

else:

print('输入错误!')

else:

q_flag = True

elif city == 'q':

q_flag = False

elif city == 'Q':

Q_flag = False

else:

print('输入错误!')

else:

q_flag = True

elif province == 'Q':

Q_flag = False

else:

print('输入错误!')

版本2

# _author : Ahern Li

# @_date : 2017/9/12

menu = {

'浙江省':{

'杭州市':{

'余杭区':{'中泰':{},'临平':{}},

'西湖区':{'西湖':{},'留下':{}}

},

'温州市':{

'苍南县':{'灵溪':{},'龙港':{}},

'瑞安县':{'安阳':{},'锦湖':{}}

}

},

'广东省':{

'广州市':{

'越秀区':{'人民路':{},'北京路':{}},

'荔湾区':{'沙面':{},'龙津':{}}

},

'珠海市':{

'香洲区':{'拱北':{},'吉大':{}},

'金湾区':{'红旗镇':{},'平沙镇':{}}

}

}

}

current_layer = menu # 实现动态循环

parent_layer = [] # 保留所有父层,最后一个元素永远为父层

while True:

print() # 仅为了打印美观

for i in current_layer: # 遍历打印地址

print(i)

choice = input('请在下方输入查询地址\n>>>:').strip()

if choice in current_layer:

if current_layer[choice]: # 判断是否为末层

parent_layer.append(current_layer) # 进入子层前,添加当前层作为父层

current_layer = current_layer[choice] # 修改子层

else:

print('当前是最后一页')

elif choice == '':

continue

elif choice == 'q': # 返回上层

if parent_layer: # 判断 parent_layer 是否为空

current_layer = parent_layer.pop() # 取出当前层父层

# 退出循环

elif choice == 'Q':

break

else:

print('输入错误!')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值