課題 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 レベル モードを取得する必要があります。価値情報。
フローチャートは次のとおりです:
代码如下: 上面代码,我学到了如下知识: (1)yaml格式文件的处理,导入yaml模块,使用yaml.load()进行文件字符串转换为字典形式; (2)全局变量的定义,在很多时候,在程序运行的过程中,我们总是需要的到几个重要的变量,使用全局变量,能够让我们更好的理清思路,全局变量使用global来进行定义; (3)函数def的结束是遇到return,遇到return无论什么时候,就结束这个函数,因为当我们与while结合使用的时候,可以直接使用return来结束这个循环; (4)字典、列表的处理方式; (5)enumerate()函数的使用; (6)sys.exit()来退出整个程序,sys模块; (7)不怕麻烦,牢牢知道自己需要的是什么自己的目的是什么。 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
以上が多階層メニュー操作(機能実装)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。