zoukankan      html  css  js  c++  java
  • python小程序(模拟三级菜单)

    需求:

    (实现三级菜单的依次递归查询,输入一级菜单某项,依次列出下级菜单内容)

    下图为程序流程图

    代码实现

     1 #!/usr/bin/env python
     2 #-*- coding=utf-8 -*-
     3 #author:sunwei
     4 import os
     5 import time
     6 players_info = {
     7     "美国东部":{
     8         "热火":["韦德","波什","德拉季奇"],
     9         "骑士":["詹姆斯","欧文","乐福"],
    10         "公牛":["洛尔","乔丹","罗斯"]
    11     },
    12     "美国中部":{
    13         "篮网":["易建联","德隆","乔约翰逊"],
    14         "凯尔特人":["雷阿伦","加内特","皮尔斯"],
    15         "公牛":["艾佛森","马龙","J博士"]
    16     },
    17     "美国西部":{
    18         "勇士":["库里","格林","杜兰特"],
    19         "火箭":["姚明","麦迪","弗朗西斯"],
    20         "马刺":["邓肯","吉诺比利","帕克"]
    21     }
    22 }
    23 print("欢迎来到NBA球员检索系统!!!")
    24 time.sleep(1)
    25 os.system("clear")
    26 
    27 
    28 while True:
    29     for area in players_info:
    30         print(area)  #打印第一层目录
    31     area_input = input("33[1;32;40m请输入你想要查询的地区(q退出):33[0m").strip()
    32     if len(area_input) == 0:continue  #用户输入为空则跳出本次循环,继续下次循环
    33     if area_input in players_info:    
    34         teamlist = players_info[area_input]
    35         while True:
    36         #    print(teamlist)  输出为一个某一地区的value值,表现形式为字典
    37             for team in teamlist:
    38                 print(team)  #打印第二层目录
    39             team_input = input("33[1;32;40m请输入你想要查询的球队(q退出,b返回上一层):33[0m").strip()
    40             if len(team_input) == 0:continue
    41             if team_input in teamlist:
    42                 while True:
    43                     for players in teamlist[team_input]:
    44                         print(players)#最后一层的数据类型为列表,直接打印
    45                     user_input = input("33[1;32;40mq退出,b返回上一层):33[0m").strip()
    46                     if len(user_input) == 0:continue
    47                     if user_input == "q":
    48                         exit()
    49                     elif user_input == "b":
    50                         break
    51                     else:
    52                         print("33[1;31;40m输入有误,请重试!!!33[0m")
    53             elif team_input == "q":
    54                 exit()
    55             elif team_input == "b":
    56                 break
    57             else:
    58                 print("33[1;31;40m输入有误,请重试!!!33[0m")    
    59     elif area_input == "q":
    60         exit()
    61     else:
    62         print("33[1;31;40m输入有误,请重试!!!33[0m")
    three_level_menu.py

    上述代码过于繁琐,后期会精简代码............

    经过进一步的学习后,掌握了python的文件操作,于是.....

    1.文件如下

    编程语言:    默认全部折叠  显示行号
    
    {
        "美国东部":{
            "热火":{
                "韦德":["后卫"],
                "波什":["后卫"],
                "德拉季奇":["前锋"]
            },    
            "骑士":{
                "詹姆斯":["前锋"],
                "欧文":["后卫"],
                "汤普森":["中锋"]    
            },
            "公牛":{
                "罗斯":["后卫"],
                "诺阿":["中锋"],
                "罗尔邓":["前锋"],
            }
        },
        "美国西部":{
            "勇士":{
                "库里":["后卫"],
                "博古特":["后卫"],
                "杜兰特":["前锋"]
            },    
            "火箭":{
                "麦迪":["前锋"],
                "阿尔斯通":["后卫"],
                "姚明":["中锋"]
            },
            "马刺":{
                "帕克":["后卫"],
                "邓肯":["中锋"],
                "吉诺比利":["前锋"],
            }
        }
    }
    换一种代码着色方法
    确定  关闭
    info.txt

    2.代码如下

    #!/usr/bin/env python
    #-*- coding=utf-8 -*-
    #author:sunwei
    import time
    exit_flag = False
    while not exit_flag:
        f =  open("info.txt","r",encoding="utf-8") 
        f1 = eval(f.read())
        for i1 in f1:
            print("33[0;31;40m%s33[0m"%i1)
        choice1 = input("选择进入一级菜单[q退出]>>")
        if choice1 in f1:
            while not exit_flag:
                for i2 in f1[choice1]:
                    print("	",i2)
                choice2 = input("选择进入二级菜单[q退出,b返回上一级]>>")
                if choice2 in f1[choice1]:
                    while not exit_flag:
                        for i3 in f1[choice1][choice2]:
                            print("		",i3)
                        choice3 = input("选择进入三级菜单[q退出,b返回上一级]>>")
                        if choice3 in f1[choice1][choice2]:
                            for i4 in f1[choice1][choice2][choice3]:
                                print("			",i4)
                            while not exit_flag:
                                choice4 = input("已经是最后一层,输入[q退出,b返回上一级]>>")
                                if choice4 == "b":
                                    break
                                elif choice4 == "q":
                                    print("即将离开系统")
                                    time.sleep(2)
                                    exit_flag = True
                                        
                        elif choice3 == "b":
                            break
                        elif choice3 == "q":
                            print("即将离开系统")
                            time.sleep(2)
                            exit_flag = True
                elif choice2 == "b":
                    break
                elif choice2 == "q":
                    exit_flag = True
                    print("即将离开系统")
                    time.sleep(2)
        elif choice1 == "q":
            exit_flag = True
            print("即将离开系统")
            time.sleep(2)
    f.close()
    three_level_menu.py

    3.执行

    [root@localhost three_level_menu]# python three_level_menu.py 
    美国东部
    美国西部
    选择进入一级菜单[q退出]>>美国西部
    	 勇士
    	 火箭
    	 马刺
    选择进入二级菜单[q退出,b返回上一级]>>勇士
    		 库里
    		 博古特
    		 杜兰特
    选择进入三级菜单[q退出,b返回上一级]>>库里
    			 后卫
    已经是最后一层,输入[q退出,b返回上一级]>>q
    即将离开系统
    

    未完待续.........(利用一层循环达到目的)

    在你说话之前,先听;在你回应之前,先想;在你消费之前,先挣;在你退出之前,先试
  • 相关阅读:
    反向代理实例
    nginx常用命令和配置
    nginx的安装
    Can Live View boot up images acquired from 64bit OS evidence?
    What is the behavior of lnk files?
    EnCase v7 search hits in compound files?
    How to search compound files
    iOS 8.3 JB ready
    Sunglasses
    现代福尔摩斯
  • 原文地址:https://www.cnblogs.com/sunweigogogo/p/7507429.html
Copyright © 2011-2022 走看看