综合实例

# 综合实例

## 10086语音服务

## 购物系统

## 综合实例要点

### 少用if...else...嵌套,函数可以构成字典后用for...in,循环

### 简单程序往前放,if.(真).执行的函数.else (假) 返回,可以用if  假.,返回(continue)循环,否则执行函数.

### 定义的函数下面加三引号自动补全需要说明的参数,然后写参数说明

## 市、区、镇三级菜单分级显示

### 采用递归方式

#递归方法占用内存大,速度慢
menu = {
            "江北区":{
                        "鱼嘴镇":{
                                        "大鱼村":{},
                                        "中鱼村":{},
                                        "小鱼村":{}
                                    },
                        "复盛镇": {
                                        "大盛村":{},
                                        "中盛村":{},
                                        "小盛村":{}
                                     },
                        "五宝镇": {
                                        "大宝村":{},
                                        "中宝村":{},
                                        "小宝村":{}

                                    }
                     },
            "渝中区":{
                        "大坪镇":{
                                        "大坪村":{},
                                        "中坪村":{},
                                        "小坪村":{}
                                    },
                        "石油镇": {
                                        "大油村":{},
                                        "中油村":{},
                                        "小油村":{}
                                     },
                        "解放镇": {
                                        "大放村":{},
                                        "中放村":{},
                                        "小放村":{}

                                    }

                    },
            "沙坪坝区":{
                        "井口镇":{
                                        "大井村":{},
                                        "中井村":{},
                                        "小井村":{}
                                    },
                        "土主镇": {
                                        "大主村":{},
                                        "中主村":{},
                                        "小主村":{}
                                     },
                        "童家桥村": {
                                        "大童村":{},
                                        "中童村":{},
                                        "小童村":{}

                                    }

                        }
        }

def menu_func(menu):
    while True:
        for key in menu:
            print(key)
        inp = input(">>>").strip()
        if inp.upper()=="Q":
            return "q"    #这里输入q后返回q,然后下面通过flag接收,再判断是q继续返回q,直到退出最外层,退出程序
        if inp.upper()=="B":
            return "b"     #注意这里返回退出的函数是回到上层调用递归函数的位置,不是直接退出程序
        elif menu.get(inp):
            flag = menu_func(menu[inp])    #递归函数,传进输入字符的字典
            if flag=="q":
                return "q"   #这里让返回q一层一层往上退出程序
menu_func(menu)



### 采用压栈方式循环提取

#采用栈循环方法,效率高,速度块
menu = {
            "江北区":{
                        "鱼嘴镇":{
                                        "大鱼村":{},
                                        "中鱼村":{},
                                        "小鱼村":{}
                                    },
                        "复盛镇": {
                                        "大盛村":{},
                                        "中盛村":{},
                                        "小盛村":{}
                                     },
                        "五宝镇": {
                                        "大宝村":{},
                                        "中宝村":{},
                                        "小宝村":{}

                                    }
                     },
            "渝中区":{
                        "大坪镇":{
                                        "大坪村":{},
                                        "中坪村":{},
                                        "小坪村":{}
                                    },
                        "石油镇": {
                                        "大油村":{},
                                        "中油村":{},
                                        "小油村":{}
                                     },
                        "解放镇": {
                                        "大放村":{},
                                        "中放村":{},
                                        "小放村":{}

                                    }

                    },
            "沙坪坝区":{
                        "井口镇":{
                                        "大井村":{},
                                        "中井村":{},
                                        "小井村":{}
                                    },
                        "土主镇": {
                                        "大主村":{},
                                        "中主村":{},
                                        "小主村":{}
                                     },
                        "童家桥村": {
                                        "大童村":{},
                                        "中童村":{},
                                        "小童村":{}

                                    }

                        }
        }
l_st = [menu]
print(l_st[-1])
while l_st:
    for key in l_st[-1]:  #循环列表最后一个元素里面的字典KEY
        print(key)
    inp = input(">>>")
    if inp.upper() == "B":
        l_st.pop()   #删除最后一个元素
    elif inp.upper() == "Q":
        break
    elif l_st[-1].get(inp):
        l_st.append(l_st[-1][inp])   #把取得的字典添加到列表最后



*XMind - Trial Version*

posted @ 2021-04-13 22:47  傻老头  阅读(53)  评论(0)    收藏  举报