1. 程式人生 > 實用技巧 >python 字串 三級選單

python 字串 三級選單

python中的字串

字串通過使用單引號、雙引號、或三引號來進行表示

 1 a = '123'
 2 b = 'abc'
 3 print(a*10)  # 重複輸出字串
 4 
 5 print('hello world '[2:])  # 通過對字串進行切片操作來獲取某一段字串的值
 6 
 7 # 關鍵字判斷
 8 print('el' in 'hello')
 9 print('a' in 'hello')
10 
11 # %格式字元的使用
12 print('%s is a good boy' % 'zhangsan')
13 
14 # 字串的連線
15 c = a.join(b)  #
在a字串的每一個字元後面加入b的字串 16 print(c) 17 c = ''.join([a, b]) # 將a和b字串連在一起 18 print(c) 19 20 """字串的一些重要方法""" 21 22 str1 = "Zhang San is a good boy " 23 str2 = '{name} is a boy ' 24 print(str1.count('a')) # 統計字串中某個元素的數量 25 print(str1.center(50, "-")) # 字串居中 26 print(str1.startswith('hu')) # 判斷字串是否以某一個內容開頭
27 print(str1.find('a')) # 尋找字串中的某一個值的數量 28 print(str2.format(name='zhang san')) # 另一種格式化輸出 將字串{}中的數替換 29 print(str1.upper()) # 將字串全部大寫 30 print(str1.lower()) # 將字串全部小寫 31 print('\thuang lei\n'.strip()) # 去掉字串中的特殊字元 32 print(str1.replace('o', 'zhang san ', 2)) # 替換字串中的某一個內容 重複替換2次或多次 33 print
(str1.split('o', 1)) # 以某一個物件將字串分割 返回的是一個列表

在字串的一些方法中只展現了部分的方法,還有很對不常用到的方法

三級選單

要求:

  1.一級一級的進入到省、市、縣。。。

  2.可以一級一級的返回

  3、可以隨時退出

分析:

  通過while迴圈進行多層的巢狀,for迴圈來實現對內容的輸出,通過對選單進行標識來選擇進入哪一個選單。用flag標誌來實現退出和返回操作。

程式碼問題:

  實現的不夠完備,存在需求實現錯誤,不能準確的實現使用者需要,通過數字標識進入某一個選單,而不是通過名稱,存在多重迴圈,迴圈過多。

程式碼實現

 1 area = {'江蘇': {'揚州': ['高郵', '儀徵'], '鹽城': ['亭湖區', '鹽都區']},
 2         '湖北': {'武漢': ['洪山區', '江岸區'], '荊州': ['石首', '公安縣']},
 3         '湖南': {'長沙': ['天心區', '開福區'], '邵陽': ['隆回', '邵東']}
 4         }
 5 print('進入三級選單'.center(20, '-'))
 6 # 定義標誌來決定迴圈是否結束
 7 flag1 = True
 8 flag2 = True
 9 # 進入第一步  省份 的迴圈
10 while flag1:
11     province = list(area.keys())  # 取出字典中鍵並轉換成一個列表
12     # # 打印出列表中的內容 即字典中的鍵
13     # for i, v in enumerate(province, 1):
14     #     print(i, '>>>:', v)
15     for i in area:
16         print(i)
17     choice = input('選擇你要進入的省份:[退出:q]')
18     # 判定進入省份的
19     if choice.isdigit():
20         choice = int(choice)
21         while flag2:
22             # 取出字典中巢狀的字典的鍵 即城市
23             city = area[province[choice-1]]
24             for i in city:
25                 print(i)
26             # 列印城市
27             # for i, v in enumerate(city, 1):
28             #     print(i, '>>>:', v)
29             choice1 = input('選擇你要進入的市:[退出:q,返回:f]')
30             # 判定進入哪個城市 或者返回 退出
31             if choice1.isdigit():
32                 choice1 = int(choice1)
33                 # 進入最後一個縣迴圈
34                 while True:
35                     print('您選擇的市下的縣為:[退出:q]')
36                     # 取出巢狀的字典
37                     # c1 = list(area.values())[0]
38                     # 取出巢狀字典的值
39                     town = list(city.values())[choice1-1]
40                     # 列印縣
41                     for i in range(len(town)):
42                         print(town[i-1])
43                     # for i, v in enumerate(town, 1):
44                     #     print(i, '>>>:', v)
45                     choice2 = input('請選擇是否退出,退出請輸入q,返回上一級:f')
46                     # 執行退出 或返回操作
47                     if choice2 == 'q':
48                         flag1 = False
49                         flag2 = False
50                         break
51                     elif choice2 == 'f':
52                         break
53             elif choice1 == 'q':
54                 flag1 = False
55                 flag2 = False
56             elif choice1 == 'f':
57                 flag2 = False
58     elif choice == 'q':
59         flag1 = False

對程式碼以目前的知識進行修改:

通過一個while迴圈來實現,對迴圈中的變數每一次迴圈都進行一次修改,並且在列表中儲存迴圈中產生的上一級的字典,在返回時使用並刪除在列表中的記錄

 1 area = {'江蘇':
 2             {'揚州':
 3                  {'高郵':
 4                       {},
 5                   '儀徵': {}},
 6              '鹽城':
 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                   '邵東':
35                       {}}
36     }
37 }
38 current = area
39 back = []
40 while True:
41     for key in current:
42         print(key)
43     choice = input('>>>[q:退出,b返回]').strip()
44     if choice == 0:
45         continue
46     elif choice == 'b':  # 判斷是否返回
47         current = back.pop()  # 取列表最後一個值用於返回到上一級的字典,並刪除當前層的字典
48     elif choice in current:  # 進入下一個選單
49         back.append(current)  # 保留上一級的字典,新增到列表中
50         current = current[choice]
51     elif choice == 'q':
52         print('退出')
53         break
54     else:
55         print('已經到底了')