python多级菜单纯循环与分支

mengdie1978 / 2024-01-25 / 原文

python_多级菜单_纯循环与分支

源代码:


坑点:
1.纯分支与循坏,重复代码
2.多级字典的访问几级就需要几个[]中括号

用面向过程,函数方式做,返回上一级菜单未做,可做一个参考,有更好思路再更新

#!/usr/bin/python3
 
 
def menu_to(message):
    '''打印菜单'''
    try:
        message.endswith('end')
    except:
        for i in message:
            print(i)
    else:
        print(message.replace('end', ''))
 
 
def get_message_key(message_info):
    '''获得每层字典的单边值'''
    try:
        keys = []
        for i in message_info:
            message_info[i]
            keys.append(i)
        return keys
    except:
        return message_info + 'end'
 
 
def menu_go(message_info):
    '''进入主菜单'''
    while True:
        try:
            judgment(message_info)
        except Exception as e:
            print(e)
 
 
def judgment(message_info):
    '''循环菜单'''
    keys = get_message_key(message_info)
    while True:
        menu_to(keys)
 
        choice = input('请输入>>>:')
        if choice == ec:
            print('暂时未实现')
            return judgment(message_info)
        elif choice == ex:
            exit('退出程序')
 
        if type(keys) == type('str') and keys.endswith('end'):
            print('菜单到底了')
            continue
        else:
 
            if choice in keys:
                message_info = message_info[choice]
                return judgment(message_info)
            else:
                print('输入错误,请重新输入')
 
if __name__ == '__main__':
    info_message = {'湖南':
                        {'衡阳':
                             {'珠晖区': '湖南工学院'},
                         '湘潭':
                             {'晖晖': '啦啦'}},
                    '北京':
                        {'朝阳':
                             {"德玛": "北京大学"}}}
    ec = 'q'  # 返回上一级
    ex = 'e'  # 退出程序
    menu_go(info_message)