ホームページ >バックエンド開発 >Python チュートリアル >多階層メニュー操作(機能実装)

多階層メニュー操作(機能実装)

巴扎黑
巴扎黑オリジナル
2017-06-23 15:08:492589ブラウズ

課題 2: マルチレベルメニュー

(1) 3 レベルのメニュー

(2) 各サブメニューに入るように選択できます

(3) 新しい知識ポイント必須: List 、 Dictionary

要件: 前のレベルに戻るには「back」と入力し、プログラム全体を終了するには「quit」と入力します

この例の第 3 レベルのメニューは yaml ファイル形式で、形式は次のとおりです。 :

香港:
  香港
澳门:
  澳门
台湾:
  台湾
钓鱼岛:
  钓鱼岛
北京市:  - 市辖区  - 东城区  - 西城区  - 崇文区  - 宣武区  - 朝阳区
河北省:  - 石家庄市:- 长安区- 桥东区- 桥西区- 新华区  - 唐山市:- 路南区- 路北区- 古冶区- 开平区  - 秦皇岛市:- 海港区- 山海关区
山西省:  - 太原市:- 小店区- 迎泽区- 杏花岭区  - 大同市:- 城 区- 矿 区- 南郊区  - 阳泉市:- 城 区- 矿 区- 郊 区- 平定县- 盂 县  - 长治市:- 城 区- 郊 区- 长治县- 襄垣县- 屯留县

yaml形式の処理方法は次のとおりです:

まず、上記の形式は多階層モードであり、第1レベル、第2レベル、第3レベルの辞書があります。 yaml を使用して処理されるのは次のとおりです:

,) =

実行して取得される辞書は次の形式になります:

{'Hong Kong': 'Hong Kong',

'Beijing City': ['municipal District', 'Dongcheng District', 'Xicheng District', 'Chongwen District ', 'Xuanwu District', 'Chaoyang District'],

'Taiwan': '台湾',

City': ['Chang'an District', 'Qiaodong District' 、'橋西区'、'新華区']}、{'唐山市': ['魯南区'、'魯北区'、'古野区' '、'開平区']}、{'秦皇島市': [ '海港区', '山海関区']}],

'釣魚島': '釣魚島',

'山西省': [{'太原市': ['小店区', '迎澤区', '興化嶺区']}, {'大同市': ['市街地区', '鉱山区', '南部郊外']} , {'陽泉市': ['市街地', '鉱山区' ', '郊外', '平定県', '裕県']}, {'長治市': ['市街地', '郊外', '長治県 ', '祥源県', '屯留県' ]}]}

取得するものは辞書で、最初のレベルは "Hong Kong": "Hong Kong" のようなもので、値は文字列型です。 'Beijing City': ['市区'、'東城区'、'西城区'、'崇文区'、'玄武区'、'朝陽区'】

、値はリストの形式であり、ネストされた文字列は文字列です; 複雑なのは、次のような 3 レベルのモデルです:

'河北省': [{'石家荘市': ['長安区', '橋東区', '橋西区', '新華区'] }, {'唐山市 ': ['魯南区', '魯北区', '古野区', '開平区']}, {'秦皇島市': ['海港区', '山海関区']}] 、内部 2 番目のレベルはリストで、リスト内にネストされているのは辞書です。 アイデア:

(1) このプロジェクトの核心は、実際には、処理中に、値に対応する型に基づいて判断することです。この方法の方が良いです

(2) まず、辞書の最初のレベルを調べて、州を取得し、その値に従って州を出力します。ユーザーが入力した対応する州。 value;

( 4) 値が文字列の場合、それが第 1 レベルのメニューの形式であることを意味し、これがそれを処理する最良の方法です。 ) 値がリストで、最初の値が文字列の場合は、北京第 2 レベル モードのようなものであり、第 2 レベル モードのメソッドを使用して表示します。 (6) 値がはリストであり、最初の値は辞書の形式であり、これは第 3 レベルのモードであることを意味し、操作するには 3 レベルのモードを使用する必要があります。 (7) 定義するにはグローバル変数、何を取得する必要があるかを知る必要があります。対応する州、市、郡がわかっている場合にのみ、州、市、郡の 3 レベル モードを取得する必要があります。価値情報。

フローチャートは次のとおりです:

   

代码如下:

 

                     s =                            province_dict =      num,province_name  enumerate(dic_db.keys(),                  province_dict[num] =         print( %(num,province_name) + ,end=                   num %  ==       print(     print(          find_index = input(     find_index =      find_index ==          sys.exit(      find_index          P_NAME =      elif find_index          P_NAME =               print(       P_NAME    #省的函数运行完成之后,返回省的名称,以便后续使用,因为主要是得到省/市/            city_name =      type(city_name) ==              elif type(city_name) ==          type(city_name[]) ==                       elif type(city_name[]) ==                               city_dict =      city_num,city_name  enumerate(city_list,         city_dict[city_num] =         print( %(city_num,city_name) + ,end=          city_num %  ==           print(         print(          city_index = input(         city_index =          city_index ==            city_index ==                       elif city_index              C_NAME =          elif city_index              C_NAME =                                    print(                      city_dict =      c_num,c_name  enumerate(country_list,          key              city_dict[c_num] =      k,v           print( %(k,v) + ,end=          k %  ==       print(     print(              city_num = input(         city_num =          city_num ==            city_num ==                       elif city_num              C_NAME =              key,value                   value ==                     C_INDEX =                            elif city_num              C_NAME =             C_INDEX =                       print(                                   countries = country_list[C_INDEX -               c_index,country  enumerate(countries,                 print( %(c_index,country) + ,end=                  k %  ==               print(             print(             country_index = input(             country_index =              country_index ==                country_index ==                               elif country_index               elif country_index  range(,len(countries)+                 show(province,C_NAME,countries[country_index-                              print(  def framework(province=,city=,country=          os.system(     message =  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                        \[;1m欢迎来到全国省市查询系统\  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  ***************************************************************************                  省  份:%                  市(区):%                  县(区):%  ***************************************************************************          print(message %  def show(province_name=,city_name=,country_name=     output =  ----------------------------------------------------------------------------            美丽的%s  %s  %      ----------------------------------------------------------------------------     \[0m     print(output %   __name__ ==      with open(,)          dic_db =                       ProvinceName =             judge(ProvinceName,dic_db)

代码运行如下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                      欢迎来到全国省市查询系统

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

***************************************************************************

                省  份:

                市(区):

                县(区):

***************************************************************************
    
1. 澳门    2. 山西省    3. 北京市    4. 台湾    
5. 钓鱼岛    6. 香港    7. 河北省    
==============================================================
q:Exit
请输入你要查询的省的编号/名字:1

----------------------------------------------------------------------------

          美丽的澳门    

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1. 澳门    2. 山西省    3. 北京市    4. 台湾    
5. 钓鱼岛    6. 香港    7. 河北省    
==============================================================
q:Exit
请输入你要查询的省的编号/名字:2

----------------------------------------------------------------------------

          美丽的山西省    

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.太原市    2.大同市    3.阳泉市    4.长治市    

===============================================================================
q:Exit       b:退回上一层
请输入您要查询的市的编号/名字:2

----------------------------------------------------------------------------

          美丽的山西省  大同市  

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.城 区    
2.矿 区    
3.南郊区    

===============================================================================
q:Exit    b:退回上一层
请输入你要查询的县(区)编号/名字:2

----------------------------------------------------------------------------

          美丽的山西省  大同市  矿 区

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.城 区    
2.矿 区    
3.南郊区    

===============================================================================
q:Exit    b:退回上一层
请输入你要查询的县(区)编号/名字:b
请输入您要查询的市的编号/名字:b
1. 澳门    2. 山西省    3. 北京市    4. 台湾    
5. 钓鱼岛    6. 香港    7. 河北省    
==============================================================
q:Exit
请输入你要查询的省的编号/名字:北京市

----------------------------------------------------------------------------

          美丽的北京市    

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.市辖区    
==================================================================
q:Exit     b:退回上一层
请输入您要查询的市的编号/名字:1

----------------------------------------------------------------------------

          美丽的北京市  市辖区  

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1. 澳门    2. 山西省    3. 北京市    4. 台湾    
5. 钓鱼岛    6. 香港    7. 河北省    
==============================================================
q:Exit
请输入你要查询的省的编号/名字:7

----------------------------------------------------------------------------

          美丽的河北省    

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.石家庄市    2.唐山市    3.秦皇岛市    
===============================================================================
q:Exit       b:退回上一层
请输入您要查询的市的编号/名字:石家庄市

----------------------------------------------------------------------------

          美丽的河北省  石家庄市  

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.长安区    2.桥东区    3.桥西区    4.新华区    
===============================================================================
q:Exit    b:退回上一层
请输入你要查询的县(区)编号/名字:长安区

----------------------------------------------------------------------------

          美丽的河北省  石家庄市  长安区

               欢迎您!

               这里山美,水美,姑娘更美

----------------------------------------------------------------------------
    
1.长安区    2.桥东区    3.桥西区    4.新华区    
===============================================================================
q:Exit    b:退回上一层
请输入你要查询的县(区)编号/名字:q

 

    上面代码,我学到了如下知识:

  (1)yaml格式文件的处理,导入yaml模块,使用yaml.load()进行文件字符串转换为字典形式;

    (2)全局变量的定义,在很多时候,在程序运行的过程中,我们总是需要的到几个重要的变量,使用全局变量,能够让我们更好的理清思路,全局变量使用global来进行定义;

    (3)函数def的结束是遇到return,遇到return无论什么时候,就结束这个函数,因为当我们与while结合使用的时候,可以直接使用return来结束这个循环;

    (4)字典、列表的处理方式;

  (5)enumerate()函数的使用;

  (6)sys.exit()来退出整个程序,sys模块;

    (7)不怕麻烦,牢牢知道自己需要的是什么自己的目的是什么。

 

以上が多階層メニュー操作(機能実装)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。