4.7. 练习2-打印三级菜单

要求:

  1. 打印服装三级菜单
  2. 可返回上一级
  3. 可随时退出程序
#算法(1)
# 定义服装购买导航菜单
menu = {
    '男装': {
        '衣服': {
            '春秋季': {
                '大衣': {},
                '风衣': {},
                '毛衣': {}
            },
            '夏季': {
                '短T': {},
                '背心': {}
            },
            '冬季': {
                '羽绒服': {},
                '毛衣': {}
            }

        },
        '裤装': {
            '春秋季': {
                '牛仔裤': {},
                '工装裤': {}
            },
            '夏季': {
                '五分裤': {},
                '七分裤': {}
            },
            '冬季': {
                '加厚长裤': {},
            },
        }

    },
    '女装': {
        '衣服': {
            '春秋季': {
                '大衣': {},
                '风衣': {},
                '毛衣': {}
            },
            '夏季': {
                '短T': {},
                '背心': {}
            },
            '冬季': {
                '羽绒服': {},
                '毛衣': {}
            }

        },
        '裤装': {
            '春秋季': {
                '牛仔裤': {},
                '工装裤': {}
            },
            '夏季': {
                '五分裤': {},
                '七分裤': {},
                '长裙': {},
                '短裙': {}
            },
            '冬季': {
                '加厚长裤': {}
            },
        }
    }
}

tag=True #设置终止标识

while tag:
    #打印一级菜单
    menu1=menu
    for i in menu1:
        print(i)

    #与用户交互接收一级菜单选项
    choice1=input('第一层:您需要男装or女装(输入b返回上一级,q退出)>>>>').strip()

    #返回上一层
    if choice1 == 'b':
        break

    #全部退出
    elif choice1 == 'q':
        tag=False
        continue

    elif choice1 in menu1:
        while tag:
            menu2=menu1[choice1]

            #打印二级菜单
            for i in menu2:
                print(i)

            #与用户交互输入二级菜单选项
            choice2 = input('第二层您需要衣服 or 裤装(输入q退出,b返回上一级)>>').strip()

            if choice2 == 'b':
                break
            elif choice2 == 'q':
                tag=False
                continue

            elif choice2 in menu2:
                while tag:
                    menu3=menu2[choice2]
                    # 打印三级菜单
                    for i in menu3:
                        print(i)

                    # 与用户交互输入三级菜单选项
                    choice3=input('第三层:您需要哪个季节的衣服(输入q退出,b返回上一级)').strip()

                    if choice3 == 'b':
                        break
                    elif choice3 == 'q':
                        tag = False
                        continue
                    elif choice3 in menu3:
                        menu4=menu3[choice3]

                        for i in menu4:
                            print(i)
                    choice4=input('输入q退出,b返回上一级').strip()
                    if choice4 == 'b':
                        break
                    elif choice4 == 'q':
                        tag = False
                        continue
                    else:
                        print('请按照要求重新输入')
                        continue
            else:
                print('请按照要求重新输入')
                continue
    else:
        print('请按照要求重新输入')
        continue

#算法(2)
# 定义服装购买导航栏
menu = {
    '男装': {
        '衣服': {
            '春秋季': {
                '大衣': {},
                '风衣': {},
                '毛衣': {}
            },
            '夏季': {
                '短T': {},
                '背心': {}
            },
            '冬季': {
                '羽绒服': {},
                '毛衣': {}
            }

        },
        '裤装': {
            '春秋季': {
                '牛仔裤': {},
                '工装裤': {}
            },
            '夏季': {
                '五分裤': {},
                '七分裤': {}
            },
            '冬季': {
                '加厚长裤': {},
            },
        }

    },
    '女装': {
        '衣服': {
            '春秋季': {
                '大衣': {},
                '风衣': {},
                '毛衣': {}
            },
            '夏季': {
                '短T': {},
                '背心': {}
            },
            '冬季': {
                '羽绒服': {},
                '毛衣': {}
            }

        },
        '裤装': {
            '春秋季': {
                '牛仔裤': {},
                '工装裤': {}
            },
            '夏季': {
                '五分裤': {},
                '七分裤': {},
                '长裙': {},
                '短裙': {}
            },
            '冬季': {
                '加厚长裤': {}
            },
        }
    }
}

layers=[menu] #层级栈,用于存放层级

while True:

    if len(layers)==0:break #当栈为空时退出

    current_layer=layers[-1] #当前层级为栈顶元素

    #当前层级没有选项时退出
    if len(current_layer)==0:
        break

    #打印菜单
    for i in current_layer:
        print(i)

    choice=input('>>').strip()

    #退出
    if choice=='q':
        break


    elif choice=='b':
        layers.pop(-1) #弹出当前层,返回上一级
        continue

    elif choice in current_layer:
        layers.append(current_layer[choice]) #更新当前层级
    else :
        continue
posted @ 2025-08-15 09:52  bokebanla  阅读(10)  评论(0)    收藏  举报