Heim >Backend-Entwicklung >Python-Tutorial >Mehrstufige Menübedienung (Funktionsimplementierung)

Mehrstufige Menübedienung (Funktionsimplementierung)

巴扎黑
巴扎黑Original
2017-06-23 15:08:492601Durchsuche

Aufgabe 2: Mehrstufiges Menü

(1) Dreistufiges Menü

(2) Sie können jedes Untermenü aufrufen

(3) Neue Wissenspunkte erforderlich: Liste, Wörterbuch

Anforderungen: Geben Sie „back“ ein, um zur vorherigen Ebene zurückzukehren, und geben Sie „quit“ ein, um das gesamte Programm zu beenden.

Das Menü der dritten Ebene in diesem Beispiel ist ein Yaml-Dateiformat. Das Format lautet wie folgt:

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

Die Verarbeitungsmethode des Yaml-Formats ist wie folgt:

Zunächst einmal ist das obige Format ein Im Mehrebenenmodus gibt es die erste Ebene, die zweite Ebene und die dritte Ebene. Das mit Yaml verarbeitete Wörterbuch hat die folgende Form:

,) =

Das durch Ausführen erhaltene Wörterbuch hat das folgende Format:

{'Hong Kong': 'Hong Kong',

'Peking': ['Stadtbezirk', 'Dongcheng-Bezirk', 'Xicheng-Bezirk', 'Chongwen-Bezirk', 'Xuanwu-Bezirk', 'Chaoyang-Bezirk'],

'Taiwan': ' Taiwan',

'Macau': 'Macau',

'Provinz Hebei': [{' Shijiazhuang City“: [‚Chang'an District‘, ‚Qiaodong District‘, ‚Qiaoxi District‘, ‚Xinhua District‘]}, {‘Tangshan City‘: [‘Lunan District‘, ‚Lubei District‘, ‚Guye District‘ , 'Bezirk Kaiping' ]}, {'Stadt Qinhuangdao': ['Bezirk Haigang', 'Bezirk Shanhaiguan']}],

  'Insel Diaoyu': 'Insel Diaoyu',

  'Provinz Shanxi': [{'Taiyuan City': ['Xiaodian District', 'Yingze District', 'Xinghualing District']}, {'Datong City': [' Stadtbezirk“, „Bergbaugebiet“, „Südliche Vororte“]}, {‘Yangquan City‘: [‚Stadtgebiet‘, ‚Bergbaugebiet‘, ‚Vorstadtgebiet‘, ‚Pingding County‘, ‚Yu County‘]}, {'Changzhi City': ['Stadtgebiet', 'Vorstadtgebiet', 'Changzhi County', 'Xiangyuan County', 'Tunliu County']}]}

Was Sie bekommen ist ein Wörterbuch, die erste Ebene ist wie folgt: „Hong Kong“: „Hong Kong“, der Wert ist ein Zeichenfolgentyp; , 'Xicheng District', 'Chongwen District', 'Xuanwu District', ' Chaoyang District'], der Wert liegt in Listenform vor, mit darin verschachtelten Zeichenfolgen, wie zum Beispiel: 'Provinz Hebei': [{'Stadt Shijiazhuang': ['Bezirk Chang'an', 'Bezirk Qiaodong', 'Bezirk Qiaoxi', 'Bezirk Xinhua']}, {'Stadt Tangshan': ['Bezirk Lunan ', 'Lubei District', 'Guye District', 'Kaiping District'] }, {'Qinhuangdao City': ['Haigang District', 'Shanhaiguan District']}], die zweite Ebene darin ist eine Liste und das Wörterbuch ist in der Liste verschachtelt.

Ideen:

(1) Der Kern dieses Projekts ist eigentlich das Sparen / Bei Modellen wie Stadt/Landkreis beurteilen wir während der Verarbeitung anhand des Typs, der dem Wert entspricht, welche Methode besser zu verwenden ist

(2 ) Zuerst durchlaufen wir die erste Ebene des Wörterbuchs, rufen die Provinzen ab und fügen sie in ein Wörterbuch ein. Auf diese Weise können wir die entsprechenden Provinzen entsprechend den vom Benutzer eingegebenen Werten ausgeben >

(3) Nachdem wir die Provinz erhalten haben, können wir den Schlüsselwert unter der Provinz abrufen, den dem Wert entsprechenden Typ beurteilen und je nach Werttyp verschiedene Operationen ausführen ;

(4) Wenn der Wert eine Zeichenfolge ist, bedeutet dies, dass es sich um ein Menü der ersten Ebene handelt, was die beste Art ist, damit umzugehen

(5) Wenn der Wert eine Liste und der erste Wert eine Zeichenfolge ist, bedeutet dies, dass es sich um einen sekundären Modus wie Peking handelt und er mit dem angezeigt wird Sekundärmodusmethode;

 (6) Wenn der Wert eine Liste ist und der erste Wert in Form eines Wörterbuchs vorliegt, zeigt dies an, dass es sich um einen handelt Drei-Ebenen-Modus, und der Drei-Ebenen-Modus muss zum Betrieb verwendet werden.

(7) Um globale Variablen zu definieren, müssen wir wissen, was wir brauchen Um das Drei-Ebenen-Modell der Provinzen, Städte und Landkreise zu erhalten, müssen wir nur zum Wörterbuch gehen, indem wir es durchlaufen.

Das Flussdiagramm sieht wie folgt aus:

   

代码如下:

 

                     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)不怕麻烦,牢牢知道自己需要的是什么自己的目的是什么。

 

Das obige ist der detaillierte Inhalt vonMehrstufige Menübedienung (Funktionsimplementierung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn