多级 主程序 一次循环 rate 循环 数字 print 次循环 输入
python 作业 5:多级菜单
# 作业5:多级菜单
# ● 三级菜单,省,市,县,公司,要求程序启动后,允许用户依次选择进入各子菜单
# ● 可以在任意一级菜单返回上级菜单,也可以退出程序
# ● 所需新知识点:列表,字典
#
# 思路:
# 先创字典,字典三层嵌套
#逐层提取key字段,
#先不管各种可能,把主程序写好,即各种选择都是好好的情况下能实现的功能,再补充各种可能
#这个地方其实是重点考察while循环里面的continue和break
#出于程序简化,没有考虑输入数字超范围,输入的不是数字,q,b三者以外的情况
dict1 ={
"省1":{
"市11":{
"县111":{
"公司1111:{}",
"公司1112:{}"
},
"县112":{
"公司1121:{}",
"公司1122:{}"
}
},
"市12":{
"县121":{
"公司1211:{}",
"公司1212:{}"
},
"县122":{
"公司1221:{}",
"公司1222:{}"
}
},
"市13":{
"县131":{},"县132":{}
}
},
"省2":{
"市21":{
"县211":{},"县212":{}
},
"市22":{
"县221":{},"县222":{}
},
"市23":{
"县231":{},"县232":{}
}
},
"省3":{
"市31":{
"县311":{},"县312":{}
},
"市32":{
"县321":{},"县222":{}
},
"市33":{
"县331":{},"县332":{}
}
}
}
judge = True
while judge:
list1 = list(dict1.keys())
list1.sort()
print("The level_1 menu:")
for index,item in enumerate(list1):
print(index,item)
choice1 = input("Please choose level_1:")
if choice1.isdigit():
choice1 = int(choice1)
choice_key1 = list1[choice1]
list2 = list(dict1.get(choice_key1))
list2.sort()
while judge:
print("The level_2 menu:")
for index, item in enumerate(list2):
print(index, item)
choice2 = input("Please choose level_2:")
if choice2.isdigit():
choice2 = int(choice2)
choice_key2 = list2[choice2]
list3 = list(dict1.get(choice_key1).get(choice_key2))
list3.sort()
while judge:
print("The level_3 menu:")
for index, item in enumerate(list3):
print(index, item)
choice3 = input("Please choose level_3:")
if choice3.isdigit():
choice3 = int(choice3)
choice_key3 = list3[choice3]
list4 = list(dict1.get(choice_key1).get(choice_key2).get(choice_key3))
list4.sort()
print("The level_4 menu:")
for index, item in enumerate(list4):
print(index, item)
choice4 = input("It's the last level,Please come back:")
if choice4 == "q":
# 判断位置空后,可以连续跳出多个循环
judge = False
# 这里是跳出了本while循环的所有循环
break
elif choice4 == "b":
# 这里只是跳出了本while循环中的一次循环
continue
elif choice3 == "q":
judge = False
break
elif choice3 == "b":
break
elif choice2 == "q":
judge = False
break
elif choice2 == "b":
break
elif choice1 == "q" :#是q退出
judge = False
else:#不是q也不是数字,重新选
print("Please choose the number.")
来源: http://www.bubuko.com/infodetail-2458184.html