python 打印三級菜單


 

要求:

1、用戶選擇城市菜單編號顯示對應的下級菜單

2、可以返回上級菜單,只有在用戶確定正常退出時才退出

 

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 # __author__:cjx
 4 import sys
 5 
 6 china_map = {
 7     '山東': {
 8         '青島': ['四方', '黃島', '嶗山', '李滄', '城陽'],
 9         '濟南': ['歷城', '槐蔭', '高新', '長青', '章丘'],
10         '煙台': ['龍口', '萊山', '牟平', '蓬萊', '招遠']
11     },
12     '江蘇': {
13         '蘇州': ['滄浪', '相城', '平江', '吳中', '昆山'],
14         '南京': ['白下', '秦淮', '浦口', '棲霞', '江寧'],
15         '無錫': ['崇安', '南長', '北塘', '錫山', '江陰']
16     },
17     '浙江': {
18         '杭州': ['西湖', '江干', '下城', '上城', '濱江'],
19         '寧波': ['海曙', '江東', '江北', '鎮海', '余姚'],
20         '溫州': ['鹿城', '龍灣', '樂清', '瑞安', '永嘉']
21     },
22     '安徽': {
23         '合肥': ['蜀山', '廬陽', '包河', '經開', '新站'],
24         '蕪湖': ['鏡湖', '鳩江', '無為', '三山', '南陵'],
25         '蚌埠': ['蚌山', '龍子湖', '淮上', '懷遠', '固鎮']
26     },
27     '廣東': {
28         '深圳': ['羅湖', '福田', '南山', '寶安', '布吉'],
29         '廣州': ['天河', '珠海', '越秀', '白雲', '黃埔'],
30         '東莞': ['莞城', '長安', '虎門', '萬江', '大朗']
31     }
32 }
33 
34 province_list = list(china_map.keys())    # 用list函數把字典的key生成列表並賦值
35 
36 while True:            # 最外層死循環
37     print(''.center(50, '*'))            # 利用字符串類型的方法打印提示符
38     for i,p in enumerate(province_list):    # 利用enumerate函數取出元素對應的索引及元素
39         print(i+1,p)            # 由於列表的索引是從0開始計數的,因此要 +1 展示更好合適
40     p_id = input('請輸入要查看的省名稱編號,退出請輸入 q:')
41     if p_id.isdigit():
42         p_id = int(p_id)       # 把輸入的編號轉換成int型
43         if p_id > 0 and p_id <= len(province_list):   # 判斷是否輸入的是有效的
44             pro_name = province_list[p_id - 1]       # 用用戶輸入的編號取出對應的城市名,索引從0開始的,因此要 -1 才是對應的值
45             city_list = list(china_map[pro_name].keys())      # 根據用戶輸入,獲取二級菜單列表
46             while True:                # 進入二級菜單死循環
47                 print(''.center(50, '*'))
48                 for i, c in enumerate(city_list):
49                     print(i+1, c)
50                 c_id = input('請輸入你要查看的市名稱編號,返回上一級請輸入 b,退出請輸入 q :')
51                 if c_id.isdigit():
52                     c_id = int(c_id)
53                     if 0 < c_id <= len(city_list):
54                         city_name = city_list[c_id-1]
55                         town_list = china_map[pro_name][city_name]
56                         while True:
57                             print(''.center(50, '*'))
58                             for i, t in enumerate(town_list):
59                                 print(i+1, t)
60                             b_or_q = input('已經到最后一層,返回上一級請輸入 b,退出請輸入 q :')
61                             if b_or_q == 'b':
62                                 break          # 跳出循環,即回到第一級循環
63                             elif b_or_q == 'q':
64                                 exit(0)
65                             else:
66                                 print('輸入有誤!')
67                     else:
68                         print('您輸入的ID %d 不存在!' % c_id)
69                 elif c_id == 'b':
70                     break              # 跳出循環,即回到第二級循環
71                 elif c_id == 'q':
72                     sys.exit('正在退出 ......')
73                 else:
74                     print('無效輸入')
75 
76         else:
77             print('您輸入的ID %d 不存在!' % p_id)     # 如果輸入的不是正確的范圍提示輸入的不存在
78     elif p_id == 'q':
79         exit()
80     else:
81         print('無法識別您的輸入')       # 如果輸入的不是可以轉換成數字的字符就提示非法輸入
View Code

 

 

運行效果演示:

*********************** 省 ************************
1 山東
2 江蘇
3 浙江
4 安徽
5 廣東
請輸入要查看的省名稱編號,退出請輸入 q:5
*********************** 市 ************************
1 深圳
2 廣州
3 東莞
請輸入你要查看的市名稱編號,返回上一級請輸入 b,退出請輸入 q :2
*********************** 縣 ************************
1 天河
2 珠海
3 越秀
4 白雲
5 黃埔
已經到最后一層,返回上一級請輸入 b,退出請輸入 q :b
*********************** 市 ************************
1 深圳
2 廣州
3 東莞
請輸入你要查看的市名稱編號,返回上一級請輸入 b,退出請輸入 q :b
*********************** 省 ************************
1 山東
2 江蘇
3 浙江
4 安徽
5 廣東
請輸入要查看的省名稱編號,退出請輸入 q:3
*********************** 市 ************************
1 杭州
2 寧波
3 溫州
請輸入你要查看的市名稱編號,返回上一級請輸入 b,退出請輸入 q :q
正在退出 ......

 

原文:http://www.cnblogs.com/pyramid1001/p/5803294.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM