zoukankan      html  css  js  c++  java
  • 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、可以通过引入循环标志位来同时跳出多级循环。

  • 相关阅读:
    flash模拟EEROM
    FATFS_SD卡
    AFIO
    ADC1多通道_DMA_内部温度传感器+内部VREFINT
    QmlBook--Meet Qt 5
    NRF24L01
    MWC飞控V2.3串口通信协议——new Multiwii Serial Protocol
    thread相关http://blog.csdn.net/forwayfarer/article/details/3455130
    comparable与comparator的区别http://blog.csdn.net/mageshuai/article/details/3849143
    ArrayList和LinkedList的区别http://pengcqu.iteye.com/blog/502676
  • 原文地址:https://www.cnblogs.com/visonwong/p/8621084.html
Copyright © 2011-2022 走看看