• Python实践之路2——三级菜单


    一、代码需求:

    编写一个三级菜单:

    1、可依次进入各菜单;

    2、输入 “back” 可返回上一级菜单;

    3、每一级菜单输入 “quit” 可退出程序。

    二、程序代码:

    第一版代码:

     1 #!/user/bin/env ptyhon
     2 # -*- coding:utf-8 -*-
     3 # Author: VisonWong
     4 
     5 province = ['河南', '陕西']
     6 city = ['郑州', '洛阳', '三门峡', '西安', '渭南', '宝鸡']
     7 city_henan = ['郑州', '洛阳', '三门峡']
     8 city_shanxi = ['西安', '渭南', '宝鸡']
     9 country_zhengzhou = ['金水区', '二七区', '惠济区', '中原区', '上街区']
    10 country_luoyang = ['涧西区', '西工区', '老城区', '洛龙区', '吉利区']
    11 country_sanmenxia = ['灵宝市', '卢氏', '义马市', '陕县']
    12 country_xian = ['碑林区', '莲湖区', '雁塔区', '未央区', '灞桥区']
    13 country_weinan = ['临渭区', '华阴市', '韩城', '华县', '潼关']
    14 country_baoji = ['金台区', '渭滨区', '岐山县']
    15 
    16 province_city = {
    17     '河南' : city_henan,
    18     '陕西' : city_shanxi
    19 }
    20 city_country = {
    21     '郑州' : country_zhengzhou,
    22     '洛阳' : country_luoyang,
    23     '三门峡': country_sanmenxia,
    24     '西安' : country_xian,
    25     '渭南' : country_weinan,
    26     '宝鸡' : country_baoji
    27 }
    28 T = True
    29 T1 = True
    30 while T:
    31     print(province)
    32     flag = True
    33     province_input =  input('Please choose one province to find out or input exit to quit!')
    34     if province_input == 'exit':
    35         break
    36     else:
    37         for i  in province:
    38             if province_input == i:
    39                 print(province_city[i])
    40                 i1=i
    41                 flag = False
    42         if flag:
    43             print('Cheak your input')
    44             continue
    45         while T1:
    46             city_input = input('Please choose one city to find out '
    47                                'or input back to last menu or input exit to quit!')
    48             if city_input == 'exit':
    49                 T = False
    50                 T1 = False
    51             elif city_input == 'back':
    52                 break
    53             else:
    54                 for j in city:
    55                     if city_input == j:
    56                         print(city_country[j])
    57                         country_input = input('Please input back to last menu or input exit to quit!')
    58                         if country_input == 'exit':
    59                             T = False
    60                             T1 = False
    61                         elif country_input == 'back':
    62                             print(province_city[i1])
    63                             break
    64 print ('Have Fun !')

     第二版代码:

     1 #!/user/bin/env ptyhon
     2 # -*- coding:utf-8 -*-
     3 # Author: VisonWong
     4 
     5 #定义三级菜单
     6 menu = {
     7     '河南': {
     8         '郑州': ['金水区', '二七区', '惠济区', '中原区', '上街区'],
     9         '洛阳': ['涧西区', '西工区', '老城区', '洛龙区', '吉利区'],
    10         '三门峡' : ['灵宝市', '卢氏', '义马市', '陕县']
    11     },
    12     '陕西': {
    13         '西安': ['碑林区', '莲湖区', '雁塔区', '未央区', '灞桥区'],
    14         '渭南': ['临渭区', '华阴市', '韩城', '华县', '潼关'],
    15         '宝鸡': ['涧西区', '西工区', '老城区', '洛龙区', '吉利区']
    16     }
    17 }
    18 
    19 continue_flag = True
    20 
    21 while continue_flag:
    22     for i in menu:
    23         print(i)
    24     province_input = input('Please choose one province to find out or input exit to quit!')
    25     if province_input in menu:
    26         #因为每级菜单都需要反复进入,故引入循环嵌套
    27         while continue_flag:
    28             for i1 in menu[province_input]:
    29                 print(i1)
    30             city_input = input('Please choose one city to find out 
    31 or input back to last menu or input exit to quit!')
    32             if city_input in menu[province_input]:
    33 
    34                 while continue_flag:
    35                     for i2 in menu[province_input][city_input]:
    36                         print(i2)
    37                     country_input = input('Please input back to last menu or input exit to quit!')
    38                     if country_input == 'back':
    39                         break
    40                     elif country_input == 'quit':
    41                         continue_flag = False
    42                     else:
    43                         print("Please check your input!")
    44 
    45             elif city_input == 'back':
    46                 break
    47             elif city_input == 'quit':
    48                 continue_flag = False
    49             else:
    50                 print("Please check your input!")
    51 
    52     elif province_input == 'quit':
    53         continue_flag = False
    54     else:
    55         print("Please check your input!")

    输出结果:

     1 E:PythonPythonExercisingMenuvenvScriptspython.exe E:/Python/PythonExercising/Menu/3level_menu.py
     2 河南
     3 陕西
     4 Please choose one province to find out or input exit to quit!上海
     5 Please check your input!
     6 河南
     7 陕西
     8 Please choose one province to find out or input exit to quit!河南
     9 郑州
    10 洛阳
    11 三门峡
    12 Please choose one city to find out or input back to last menu or input exit to quit!三门峡
    13 灵宝市
    14 卢氏
    15 义马市
    16 陕县
    17 Please input back to last menu or input exit to quit!back
    18 郑州
    19 洛阳
    20 三门峡
    21 Please choose one city to find out or input back to last menu or input exit to quit!洛阳
    22 涧西区
    23 西工区
    24 老城区
    25 洛龙区
    26 吉利区
    27 Please input back to last menu or input exit to quit!quit
    28 
    29 Process finished with exit code 0

    总结提高: 

    第二版代码相比第一版代码:

    1、熟悉多级字典的写法;

    2、加入 in 用法判断列表或字典的元素是否在其中,优化判断逻辑;

    3、因为每级菜单都需要反复进入,引入循环嵌套;

    4、可以通过引入循环标志位来同时跳出多级循环。

  • 相关阅读:
    python 可变数据类型&不可变数据类型
    java异常 总结
    java 进制转换
    在virtualbox下使用vm映像文件
    关于C语言中单双引号的问题
    php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
    fastadmin model关联模型 关联查询问题
    php 解决跨域问题
    微信支付相关
    TP5之事务处理
  • 原文地址:https://www.cnblogs.com/visonwong/p/8621084.html
Copyright © 2020-2023  润新知