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
    即将离开系统
    

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

    在你说话之前,先听;在你回应之前,先想;在你消费之前,先挣;在你退出之前,先试
  • 相关阅读:
    jsp第四次作业
    软件测试第一次作业
    jsp第三次作业
    jsp第二次作业
    JSP第九次作业
    JSP第八次作业
    JSP第七次作业
    JSP第六次作业
    JSP第五次作业
    JSP第四次作业2
  • 原文地址:https://www.cnblogs.com/sunweigogogo/p/7507429.html
Copyright © 2011-2022 走看看