python实现三级菜单,老男孩培训看到的练习题

最近在看老男孩的培训视频,作业是三级菜单的实现,这个是我自己写的,还是非常繁琐,

L = {'四川省':{'成都市':['成都县1','成都县2','成都县3','成都县4',],\
    '德阳市':['中江县1','中江县2','中江县3']},\
    '重庆市':{'重庆市':['洪崖洞区1','洪崖洞区2','洪崖洞区3',]},\
    '陕西省':{'西安市':['西安区1','西安区2','西安区3',],'宝鸡市':['宝鸡区1','宝鸡区2','宝鸡区3',]}}

print('您即将进入选择省份及城市程序,途中随时输入Q退出,\
    \n输入返回可返回上一级')
print('省份如下:')
flag = True
for i in L:
    print(i)
J = input('请输入省份:')
while flag:

    if J == 'Q':
        print('end')
        flag = False
    if J in L and flag:
        print('城市列表如下:')
        for n in L[J]:
            print(n)
        city = input('请输入城市:')
    while J in L and flag:
            if city == 'Q':
                print('您的住址是%s' %J)
                flag = False
                break
            elif city == '返回':
                J = input('请输入省份:')
                break
            if city in L[J] and flag:
                print('县列表如下:')
                for c in L[J][city]:
                    print(c)
                xian = input('请输入县:')
            while city in L[J] and flag:
                if xian == 'Q':
                    print('您的住址是%s%s' %(J,city))
                    flag = False
                    break
                elif xian == "返回":
                    city = input('请输入城市:') 
                    break
                while xian in L[J][city] and flag:
                    print('您的住址是%s%s%s' %(J,city,xian))
                    flag = False
                    break

                else:
                    if flag == True:
                        xian = input("县及列表不存在,请重新输入:")

            else:
                if (flag == True) and ((city in L[J]) == False):
                    city = input('城市列表不存在,请重新输入:')

    else:
        if (flag == True) and ((J in L) == False) :
            J = input('省份不存在,请重新输入:')
L = {'四川省':{'成都市':['成都县1','成都县2','成都县3','成都县4',],\
    '德阳市':['中江县1','中江县2','中江县3']},\
    '重庆市':{'重庆市':['洪崖洞区1','洪崖洞区2','洪崖洞区3',]},\
    '陕西省':{'西安市':['西安区1','西安区2','西安区3',],'宝鸡市':['宝鸡区1','宝鸡区2','宝鸡区3',]}}
current_layer = L #实现动态循环
parent_layer = [] #保存所有父级,最后一个永远都是上一个父级
while True:
    for key in current_layer:
        print(key)
    choice = input('>>>:').strip()
    if len(choice) == 0:continue
    if choice in current_layer:
        parent_layer.append(current_layer)   #进入下一层之前把当前层父级追加到列表中,当用户选择B的时候用pop取出父级
        current_layer = current_layer[choice] 
    elif choice == 'b':
        if parent_layer:
            current_layer = parent_layer.pop()
    else:
        print('无此项')
发布了1 篇原创文章 · 获赞 0 · 访问量 33
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览