> 백엔드 개발 > 파이썬 튜토리얼 > 다단계 메뉴 조작(기능 구현)

다단계 메뉴 조작(기능 구현)

巴扎黑
풀어 주다: 2017-06-23 15:08:49
원래의
2579명이 탐색했습니다.

과제 2: 다단계 메뉴

(1) 3단계 메뉴

(2) 각 하위 메뉴에 들어갈 수 있습니다

(3) 새로운 지식 포인트 필수: 목록, 사전

요구사항: 이전 레벨로 돌아가려면 back을 입력하고, 전체 프로그램을 종료하려면 quit를 입력하세요

이 예제의 세 번째 레벨 메뉴는 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': 'Taiwan',

City': ['Chang'an District', 'Qiaodong District' ', '차오시 구', '신화 구']}, {'탕산시': ['루난 구', '루베이 구', '구예 구' ', '카이핑 구']}, {'친황다오 시': ['해강구', '산하이관구']}],

  '댜오위다오': '댜오위다오', ​​

  '산시성': [{'타이위안시': ['샤오뎬구', 'Yingze District', 'Xinghualing District']}, {'Datong City': ['Urban District', 'Mining Area', 'Southern Suburbs']} , {'Yangquan City': ['도시 지역', '광산 지역', '교외 지역', '핑딩 현', '위 현']}, {'창즈 시': ['도시 지역', '교외 지역', '창즈 현', '샹위안 현', '툰류 현' ']}]}

얻는 것은 사전입니다. 첫 번째 수준은 "Hong Kong": "Hong Kong"이고 값은 문자열 유형입니다. 'Beijing City' : ['Municipal District', 'Dongcheng District', 'Xicheng District', 'Chongwen District', 'Xuanwu District', 'Chaoyang District']

, 값은 목록 형식이며 중첩된 문자열은 string; 복잡한 것은 다음과 같은 3단계 모델입니다:

'Hebei Province': [{'Shijiazhuang City': ['Chang'an District', 'Qiaodong District', 'Qiaoxi District', 'Xinhua District' ]}, {'탕산시': ['루난구', '루베이구', '구예구', '카이핑구']}, {'친황다오시': ['하이강구', '산하이관구']} ], 내부 두 번째 수준은 목록이고 목록 내부에는 사전이 중첩되어 있습니다. 아이디어:

(1) 실제로 이 프로젝트의 핵심은 처리 과정에서 해당 값에 해당하는 유형을 기준으로 판단하고, 이 방법을 사용하는 것이 더 좋습니다.

(2) 먼저 사전의 첫 번째 수준을 탐색하고 지방을 가져온 다음 이 방법으로 값에 따라 지방을 출력할 수 있습니다. 해당 지방을 입력합니다.

(3) 지방을 가져온 후 해당 지방의 키 값을 가져오고, 해당 값에 해당하는 유형을 판단하고, 해당 지방의 유형에 따라 다른 작업을 수행할 수 있습니다. value;

( 4) 값이 문자열인 경우 이를 처리하는 가장 좋은 방법인 1단계 메뉴 형식이라는 의미입니다. ) 값이 목록이고 첫 번째 값이 문자열인 경우 2단계 모드를 사용하여 표시합니다.

   (6) 값은 목록이고 첫 번째 값이 사전 형식이므로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿