用python的字典和for循环方式写的一个多级菜单显示
下面是简要的图形思路:
下面是代码实现方式:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#__author__ = 'weibinf'
dict = {
"黑龙江":{
"哈尔滨":{
"方正县":['天门乡','宝兴乡'],
"宾县":['永和乡','民和乡'],
"木兰县":["吉兴乡","建国乡"],
},
"大庆":{
"肇州县":["福兴乡","浩德蒙古族乡"],
"林甸县":['三合乡','黎明乡']
},
},
"山西":{
"太原":{
"清徐县":['西谷乡',"集义乡"],
"阳曲县":['凌井店乡','西凌井乡']
},
"朔州":{
"应县":["南泉乡","下马峪乡"],
"怀仁县":['亲和乡','新家园乡']
},
},
}
exit_flag = False
num = 0
while not exit_flag:
for index,key in enumerate(dict.keys()):
num +=1
print "\033[32m-->\033[0m",index,key
a_1 = num
num = 0
choice_1 = raw_input("\033[34mPlease your num: \033[0m").strip()
if not choice_1.isdigit():
if choice_1 == 'quit':
exit_flag = True
print "\033[31m<------> going to quit <----->\033[0m"
else:
print "\033[31m请输入正确的数字、、、\033[0m"
else:
choice_1 = int(choice_1)
if choice_1 >= a_1:
print "\033[31m对不起,请输入正确的对应数字、、、\033[0m"
elif choice_1 < a_1:
key_1 = dict.keys()[choice_1]
num = 0
while not exit_flag:
for index,key in enumerate(dict[key_1]):
num +=1
print "\033[32m---->\033[0m",index,key
a_2 = num
num = 0
choice_2 = raw_input("\033[34mPlease your num1: \033[0m").strip()
if not choice_2.isdigit():
if choice_2 == 'back':
break
elif choice_2 == 'quit':
exit_flag = True
print "\033[31m<------> going to quit <----->\033[0m"
break
else:
choice_2 = int(choice_2)
if choice_2 >= a_2:
print "\033[31m对不起,请输入正确的对应数字、、、\033[0m"
elif choice_2 < a_2:
key_2 = dict[key_1].keys()[choice_2]
while not exit_flag:
for index,key in enumerate(dict[key_1][key_2]):
num += 1
print "\033[32m------>\033[0m",index,key
a_3 = num
num = 0
choice_3 = raw_input("\033[34mPlease your num2: \033[0m").strip()
if not choice_3.isdigit():
if choice_3 == 'quit':
exit_flag = True
print "\033[31m<------> going to quit <----->\033[0m"
break
if choice_3 == 'back':
break
else:
choice_3 = int(choice_3)
if choice_3 >= a_3:
print "\033[31m对不起,请输入正确的对应数字、、、\033[0m"
elif choice_3 < a_3:
key_3 = dict[key_1][key_2].keys()[choice_3]
while not exit_flag:
for index,key in enumerate(dict[key_1][key_2][key_3]):
print "\033[32m-------->\033[0m",index,key
choice_4 = raw_input("\033[34mPlease your num3: \033[0m").strip()
if choice_4.isdigit():
print "\033[31m<< 已经是最后一层了、、、 >>\033[0m"
elif choice_4 == 'quit':
exit_flag = True
elif choice_4 == 'back':
break
else:
print "\033[31m<------> going to quit <----->\033[0m"